• pymysql的使用


    什么是 PyMySQL?

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

    PyMySQL的安装

    pip3 install pymysql
    #pymysql模块,同属于套接字模块。

    PyMySQL的基本使用

    使用PyMySQL模块固定不变的执行顺序

    1. 建立连接
    2. 拿到游标
    3. 执行SQL语句
    4. 关闭(游标、连接)

    2.连接到数据库

    先来查看一下数据库里有哪些数据

    使用pymysql 下的connect方法来连接数据库,先来看下需要哪些参数

    进入源码可以看到需要的参数

    (      host=None, user=None, password="",
            database=None, port=0, unix_socket=None,
            charset='', sql_mode=None,
            read_default_file=None, conv=None, use_unicode=None,
            client_flag=0, cursorclass=Cursor, init_command=None,
            connect_timeout=10, ssl=None, read_default_group=None,
            compress=None, named_pipe=None,
            autocommit=False, db=None, passwd=None, 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
    )

    别怕,最常用的参数也就是那几个,直接看代码

    import pymysql
    
    # 创建连接,test1为数据库
    conn = pymysql.connect(
        host = '127.0.0.1',
        user = 'root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor()
    
    # 执行sql语句
    row=cursor.execute('select * from student')
    print(row)
    
    # 关闭连接,游标和连接都要关闭
    cursor.close()
    conn.close()
    
    执行结果为:4

    3.查询

    pymysql里查询分为查询一条,查询多条和查询全部

    查询一条

    import pymysql
    
    # 创建连接
    conn = pymysql.connect(
        host='127.0.0.1',
        user='root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor()
    
    # 执行sql语句
    row = cursor.execute("select * from student")
    
    # 取一条数据
    print(cursor.fetchone())
    
    # 在取一条数据
    print(cursor.fetchone())
    
    执行结果:
    (1, '李六', 23)
    (2, '王五', 23)

    查询多条

    import pymysql
    
    # 创建连接
    conn = pymysql.connect(
        host='127.0.0.1',
        user='root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor()
    
    # 执行sql语句
    row = cursor.execute("select * from student")
    
    #参数是需要查询几条
    print(cursor.fetchmany(2))
    执行结果:
    
    ((1, '李六', 23), (2, '王五', 23))

    查询所有

    import pymysql
    
    # 创建连接
    conn = pymysql.connect(
        host='127.0.0.1',
        user='root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor()
    
    # 执行sql语句
    row = cursor.execute("select * from student")
    
    # 查询所有
    print(cursor.fetchall())
    
    执行结果:((1, '李六', 23), (2, '王五', 23), (4, '李四', 54), (11, '张三', 33))

    通过上面的查询,发现返回的都是元组,pymysql提供了返回字典的格式,只需要在创建游标的时候加上cursor=pymysql.cursors.DictCursor就可以里

    然后再来执行上面的代码

    import pymysql
    
    # 创建连接
    conn = pymysql.connect(
        host='127.0.0.1',
        user='root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 执行sql语句
    row = cursor.execute("select * from student")
    
    # 查询所有
    print(cursor.fetchall())
    
    执行结果:[{'id': 1, 'name': '李六', 'age': 23}, {'id': 2, 'name': '王五', 'age': 23}, {'id': 4, 'name': '李四', 'age': 54}, {'id': 11, 'name': '张三', 'age': 33}]

    3.插入数据

    import pymysql
    
    # 创建连接
    conn = pymysql.connect(
        host='127.0.0.1',
        user='root',
        password="123456",
        database='test1',
        port=3306,
        charset='utf8',
    )
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 插入一条数据
    cursor.execute("insert into student(name,age) values('haohao',26)")
    
    data = [
        ('M1', 26),
        ('M2', 22),
        ('M3', 30)
    ]
    
    # 一次性插入多条数据
    cursor.executemany("insert into student(name,age)  values(%s,%s)", data)
    
    # 插入 删除 更新 一定要commit()
    conn.commit()
    
    cursor.close()
    conn.close()

    --

  • 相关阅读:
    union 和 union all 区别
    sql 日期类型空值等于 1900-01-01
    IDENTITY_INSERT 自增开关使用
    Convert.ToDateTime() 与 DateTime.TryParse()区别
    SOLID 原则摘录
    不同JavaScript 代码段 变量作用域
    sql 常见错误总结
    jquery.form插件 提交表单 type="hidden"取不到值的问题记录
    同义词
    SQL优化传送门
  • 原文地址:https://www.cnblogs.com/Ph-one/p/12155050.html
Copyright © 2020-2023  润新知