Python学习笔记(三十一):连接 mysql 数据库

    技术2023-11-19  109


    python 中连接 mysql 数据库,可以使用 mysql-connector,mysql-connector 是 mysql 官方提供的驱动;是属于第三方的模块,所以需要手动安装;

    也可以使用 pymysql 驱动来连接 mysql 数据库,pymysql 是 python3 版本中的,python2 中使用的是 mysqldb;pymysql 模块也是第三方模块,需要手动安装;

    两种方法差不多,我是用 mysql-connector 模块连接的;

     

    1、创建 mysql 数据库连接:

    # 导入数据库连接模块 import mysql.connector # 创建数据库连接,返回一个连接对象 mydb = mysql.connector.connect( host="localhost", # 数据库地址 user="root", # 用户名 passwd="root", # 密码 database="students_db" # 数据库名称 ) print(mydb)

     

    2、创建数据库:

    # 返回数据库游标,用于操作数据库 mycursor = mydb.cursor() # 执行 sql 语句创建数据库 mycursor.execute("create database students_db")

    如果数据库已经存在,则会抛出异常:  

     

    3、查看所有已经存在的数据库:

    # 查看所有已经存在的数据库 mycursor.execute("show databases") for db in mycursor: print(db)

    输出结果:

     

    4、创建数据库连接时,也可以直接指定要操作的数据库:

    # 导入数据库连接模块 import mysql.connector # 创建数据库连接,返回一个连接对象 mydb = mysql.connector.connect( host="localhost", # 数据库地址 user="root", # 用户名 passwd="root", # 密码 database="students_db" # 数据库 ) print(mydb)

    如果数据库不存在,会抛出异常:

     

    5、创建数据表:

    # 返回数据库游标,用于操作数据库 mycursor = mydb.cursor() # 执行 sql 语句创建数据表 mycursor.execute("create table student (name varchar(20), age int)")

     

    6、插入数据:

    # 插入数据的 sql 语句,参数用占位符 %s 表示 sql = "insert into student(name, age) values(%s, %s)" # sql 语句中的参数,以元组的形式传入 value = ("jack", "22") # 执行 sql 语句插入数据 mycursor.execute(sql, value) # 提交事物,事物是默认开启的,修改表数据以后,必须要提交 mydb.commit() # 返回受影响的行数 print(mycursor.rowcount)

     

    7、批量插入数据:

    # 插入数据的 sql 语句,参数用占位符 %s 表示 sql = "insert into student(name, age) values(%s, %s)" # sql 语句中的参数,批量传参的时候,参数是一个元祖列表 value = [("jack", "22"), ("tom", "23"), ("lily", "24"), ("lucy", "25")] # 执行 sql 语句插入数据 # mycursor.execute(sql, value) # 批量插入数据的时候,使用 executemany 方法 mycursor.executemany(sql, value) # 提交事物,事物是默认开启的,修改表数据以后,必须要提交 mydb.commit() # 返回受影响的行数 print(mycursor.rowcount)

     

    8、查询数据:

    # 执行 sql 语句查询数据 mycursor.execute("select * from student") # 查询数据的时候不需要提交事物 # mydb.commit() # fetchall() 方法表示获取游标中的所有记录 myresult = mycursor.fetchall() for x in myresult: print(x) # fetchone() 表示只获取一条数据 mycursor.fetchone() # fetchmany() 表示获取多条数据,参数是获取的数量 mycursor.fetchmany(3)

    输出结果:

     

    9、删除数据:

    # 准备 sql 语句,参数用占位符 %s 表示 sql = "delete from student where name=%s" value = ("jack", ) # 参数 # 执行 sql 语句删除数据 mycursor.execute(sql, value) # 修改表数据的时候必须要提交才会生效 mydb.commit()

     

    10、修改数据:

    # 准备 sql 语句,参数用占位符 %s 表示 sql = "update student set age = %s where name = %s" value = ("18", "lucy") # 参数 # 执行 sql 语句修改数据 mycursor.execute(sql, value) # 修改表数据的时候必须要提交才会生效 mydb.commit()

     

    Processed: 0.033, SQL: 9