• pymysql


    Python3连接MySQL

    本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。

    PyMySQL介绍

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

    Django中也可以使用PyMySQL连接MySQL数据库。

    PyMySQL安装

    pip install pymysql

    连接数据库

    注意事项

    在进行本文以下内容之前需要注意:

    • 你有一个MySQL数据库,并且已经启动。
    • 你有可以连接该数据库的用户名和密码
    • 你有一个有权限操作的database

    基本使用

    # 导入模块
    import pymysql
    #获取链接
    conn = pymysql.connect(
        host="127.0.0.1",   #数据库地址
        port=3306,          #数据库端口号
        user="root",        #用户名
        password="",        #密码
        database="db1",     #要执行的数据库
        charset="utf8"
    )
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)   #获取光标对象,括号内可以不写,这样写是返回字典格式的数据
    sql="select * from userinfo;"                  #要执行的sql语句
    cursor.execute(sql)      #执行sql语句
    ret=cursor.fetchall()           
    cursor.close()            #关闭光标对象
    conn.close()               #关闭链接
    print(ret)

    增删改查操作

    # 导入模块
    import pymysql
    name=input("姓名")
    pwd=input("密码")
    #获取链接
    conn = pymysql.connect(
        host="127.0.0.1",   #数据库地址
        port=3306,         #数据库端口号
        user="root",      #用户名
        password="",      #密码
        database="day59", #要执行的数据库
        charset="utf8"
    )
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)   #获取光标对象,括号内可以不写,这样写是返回字典格式的数据
    sql="insert into userinfo(name,pwd) values (%s,%s);"   #要执行的sql语句
    cursor.execute(sql,[name,pwd])            #执行sql语句 前面是语句,后面是一个课迭代的,按位置传
    conn.commit()                #提交(涉及对表格的修改,必须提交)
    cursor.close()               #关闭光标对象
    conn.close()                #关闭链接
    # 导入模块
    import pymysql
    #获取链接
    conn = pymysql.connect(
        host="127.0.0.1",   #数据库地址
        port=3306,         #数据库端口号
        user="root",      #用户名
        password="",      #密码
        database="day59", #要执行的数据库
        charset="utf8"
    )
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)   #获取光标对象,括号内可以不写,这样写是返回字典格式的数据
    sql="insert into userinfo(name,pwd) values (%s,%s);"   #要执行的sql语句
    data = [("a","1"),    #把要添加的数据放在一个列表里,然后执行sql时,把该列表放在后面
            ("b","2"),
            ("c","3")
            ]
    cursor.execute(sql,data)            #执行sql语句 前面是语句,后面是一个可迭代的,按位置传
    conn.commit()                #提交(涉及对表格的修改,必须提交)
    cursor.close()               #关闭光标对象
    conn.close()                #关闭链接
    批量插入多条数据

    插入数据失败回滚:conn.rollback()

    import pymysql
    
    # 建立连接
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,  # 不是字符串类型(不要加引号)
        user="root",
        password="123456",
        database="day59",
        charset="utf8"  # 没有-!!!!
    )
    # 获取一个光标
    cursor = conn.cursor()
    # 定义将要执行的SQL语句
    sql1 = "insert into userinfo (name, pwd) values (%s, %s);"
    sql2 = "insert into book (name) values (%s);"
    name = "wangzhen2号"
    pwd = "123456"
    
    book_title = "Python从入门到放弃"
    try:
        # 拼接并执行SQL语句
        cursor.execute(sql1, [name, pwd])
        cursor.execute(sql2)  # 报错的SQL语句
    
        # 涉及写操作注意要提交
        conn.commit()
    except Exception as e:
        print(str(e))
        # 有异常就回滚
        conn.rollback()
    
    # 关闭连接
    cursor.close()
    conn.close()

    获取插入数据的ID(关联操作时会用到)

    import pymysql
    
    # 建立连接
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,  # 不是字符串类型(不要加引号)
        user="root",
        password="123456",
        database="day59",
        charset="utf8"  # 没有-!!!!
    )
    # 获取一个光标
    cursor = conn.cursor()
    # 定义将要执行的SQL语句
    sql = "insert into userinfo (name, pwd) values (%s, %s);"
    name = "wangzhen3号"
    pwd = "123456"
    # 拼接并执行SQL语句
    cursor.execute(sql, [name, pwd])
    # 涉及写操作注意要提交
    conn.commit()
    
    # 获取最新的那一条数据的ID
    last_id = cursor.lastrowid
    print("最后一条数据的ID是:", last_id)
    
    cursor.close()
    conn.close()

    # 导入模块
    import pymysql
    #获取链接
    conn = pymysql.connect(
        host="127.0.0.1",   #数据库地址
        port=3306,         #数据库端口号
        user="root",      #用户名
        password="",      #密码
        database="day59", #要执行的数据库
        charset="utf8"
    )
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)   #获取光标对象,括号内可以不写,这样写是返回字典格式的数据
    sql="delete from userinfo where name=%s ;"   #要执行的sql语句
    name="liulin"
    cursor.execute(sql,[name])            #执行sql语句 前面是语句,后面是一个可迭代的,按位置传
    conn.commit()                #提交(涉及对表格的修改,必须提交)
    cursor.close()               #关闭光标对象
    conn.close()                #关闭链接

    import pymysql
    
    # 建立连接
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,  # 不是字符串类型(不要加引号)
        user="root",
        password="123456",
        database="day59",
        charset="utf8"  # 没有-!!!!
    )
    # 获取一个光标
    cursor = conn.cursor()
    # 定义将要执行的SQL语句
    sql = "update userinfo set pwd=%s where name=%s;"
    # 拼接并执行SQL语句
    cursor.execute(sql, ["woshixinmima", "alex"])
    # 涉及写操作注意要提交
    conn.commit()
    # 关闭连接
    
    cursor.close()
    conn.close()

    多种查询数据方法

    import pymysql
    
    # 建立连接
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,  # 不是字符串类型(不要加引号)
        user="root",
        password="123456",
        database="day59",
        charset="utf8"  # 没有-!!!!
    )
    # 获取一个光标
    # cursor = conn.cursor()  # 默认返回元祖类型的数据
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 返回字典类型的数据
    # 定义将要执行的SQL语句
    sql = "select name, pwd from userinfo;"
    # 拼接并执行SQL语句
    cursor.execute(sql)
    # 取到查询结果
    ret1 = cursor.fetchone()  # 取一条
    ret2 = cursor.fetchmany(3)  # 取三条
    # cursor.scroll(1, mode="absolute")  # 绝对移动,你指哪儿 它就移到哪儿
    cursor.scroll(1, mode="relative")  # 相对移动, 相对它当前在的位置
    cursor.scroll(-1, mode="relative")  # 相对移动, 相对它当前在的位置
    ret3 = cursor.fetchone()  # 取一条
    # ret = cursor.fetchall()  # 取所有
    # 关闭连接
    cursor.close()
    conn.close()
    print(ret1)
    print(ret2)
    print(ret3)
  • 相关阅读:
    学习Kubernetes,这些负载均衡知识点得知道!
    Nginx请求处理流程
    字节跳动面试题+答案,答对了30+
    Cache 和 Buffer 的区别在哪里
    优化你的HTTPS(下),你需要这么做
    优化你的HTTPS(上),你需要这么做
    swift之Mac中NSSplitView的简单实用
    oc之mac中- NSBox
    Mac之NSImageView的简单实用
    swift之预防 Timer 的循环引用
  • 原文地址:https://www.cnblogs.com/pygg/p/8952837.html
Copyright © 2020-2023  润新知