Python教程:PyMySQL模块详解

Python之PyMySQL模块

目录

  • Python之PyMySQL模块
  • 安装
  • 连接数据库
  • `connect`拓展
  • 获取游标
  • 操作数据
  • 查找
  • 添加
  • 更新
  • 安装

    pip install pymysql
    

    连接数据库

    使用connect函数创建连接对象

    此对象提供数据库的关闭、事务提交、事务回滚等操作

    示例:

    import pymysql
    
    # 以下为必填参数
    conn = pymysql.connect(user='root',			# 用户名
                          password='123456',	# 密码
                          host='127.0.0.1',		# 服务器地址
                          port=3306,			# 数据库端口
                          database='emp'		# 要连接的数据库
                          )		
    

    connect拓展

    进入connect函数可以看到更多参数:

    def __init__(
            self,
            *,
            user=None,  	# 用户名
            password="",	# 密码
            host=None,		# 连接地址
            database=None,	# 库名
            unix_socket=None,	# 如果使用Unix套接字连接到数据库,指定套接字文件的路径
            port=0,			# 数据库端口号
            charset="",		# 使用的字符集 MySQL中一般是utf8mb4
            collation=None,	# 指定排序规则
            sql_mode=None,	# 连接使用的SQL模式
            read_default_file=None,	# 指定默认连接参数的配置文件路径
            conv=None,		# 自定义类型转换器
            use_unicode=True,	# 是否使用Unicode编码
            client_flag=0,	# 客户端标志位
            cursorclass=Cursor,	# 游标类,用于处理查询结果
            init_command=None,	# 建立连接后执行的初始命令
            connect_timeout=10,	# 连接超时时间
            read_default_group=None,	# 读取默认连接参数的组名
            autocommit=False,	# 是否自动提交事务
            local_infile=False,	# 是否允许本地加载数据文件
            max_allowed_packet=16 * 1024 * 1024,	# 允许的最大数据包大小
            defer_connect=False,# 是否延迟连接
            auth_plugin_map=None,	# 指定认证插件映射
            read_timeout=None,	# 读取超时时间(秒)
            write_timeout=None,	# 写入超时时间(秒)
            bind_address=None,	# 绑定本地地址
            binary_prefix=False,# 是否启用二进制前缀
            program_name=None,	#程序名称
            server_public_key=None,	# 服务器公钥
            ssl=None,		# 是否使用SSL/TLS加密连接
            ssl_ca=None,	# 指定CA证书文件的路径
            ssl_cert=None,	# 指定客户端证书文件的路径
            ssl_disabled=None,	#是否禁用SSL
            ssl_key=None,	# 指定客户端私钥文件的路径
            ssl_verify_cert=None,	# 是否验证服务器证书
            ssl_verify_identity=None,	# 是否验证服务器身份
            compress=None,  # 不支持
            named_pipe=None,  # 不支持
            passwd=None,	# 已弃用
    		db=None,		# 已弃用
        )
    

    获取游标

    conn = pymysql.connect(user='root',  # 用户名
                           password='7997',  # 密码
                           host='127.0.0.1',  # 服务器地址
                           port=3306,  # 数据库端口
                           database='emp',  # 连接的数据库
                           cursorclass=DictCursor  # 返回字典
                           )
    cursor = conn.cursor() # 获取游标
    

    操作数据

    查找
    import pymysql
    from pymysql.cursors import DictCursor
    
    conn = pymysql.connect(user='root',  # 用户名
                           password='7997',  # 密码
                           host='127.0.0.1',  # 服务器地址
                           port=3306,  # 数据库端口
                           database='emp',  # 连接的数据库
                           cursorclass=DictCursor  # 返回字典
                           )
    cursor = conn.cursor()
    
    sql = 'select * from emp5'
    cursor.execute(sql)
    res = cursor.fetchall()
    print(res) # 返回一个由列表包裹的字典
    
    # 输出:[{'id': 1, 'name': '张三', 'time': datetime.datetime(2024, 1, 25, 15, 24, 19), 'age': 18, 'wages': 2000, 'dep_id': 203}, {'id': 2, 'name': '倪哥', 'time': datetime.datetime(2024, 1, 25, 15, 34, 11), 'age': 20, 'wages': 1000, 'dep_id': 201}]
    
    
    添加

    进行增删改时注意提交事务conn.commit

    import pymysql
    from pymysql.cursors import DictCursor
    
    conn = pymysql.connect(user='root',  # 用户名
                           password='7997',  # 密码
                           host='127.0.0.1',  # 服务器地址
                           port=3306,  # 数据库端口
                           database='emp',  # 连接的数据库
                           cursorclass=DictCursor  # 返回字典
                           )
    cursor = conn.cursor()
    
    sql_insert = 'insert into emp5 (name) value(%s) '
    # 元组形式传参
    cursor.execute(sql_insert, ("嗨嗨嗨",))
    conn.commit()	# 提交事务
    
    sql_insert = 'insert into emp5 (name) value(%s) '
    # 字典形式传参
    cursor.execute(sql_insert, {'emp_name': "员工二号"})
    conn.commit()
    

    image-20240126215210837

    添加成功~

    更新
    import pymysql
    from pymysql.cursors import DictCursor
    
    # 以下为必填参数
    conn = pymysql.connect(user='root',  # 用户名
                           password='7997',  # 密码
                           host='127.0.0.1',  # 服务器地址
                           port=3306,  # 数据库端口
                           database='emp',  # 连接的数据库
                           cursorclass=DictCursor  # 返回字典
                           )
    cursor = conn.cursor()
    
    # 列表形式传参
    sql_update = 'update emp5 set name=%s where id=%s '
    cursor.execute(sql_update, ['员工三号', 11])
    conn.commit()
    

    image-20240126215533935

    作者:Az_plus

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python教程:PyMySQL模块详解

    发表回复