python 中连接 mysql 数据库,可以使用 mysql-connector,mysql-connector 是 mysql 官方提供的驱动;是属于第三方的模块,所以需要手动安装;
也可以使用 pymysql 驱动来连接 mysql 数据库,pymysql 是 python3 版本中的,python2 中使用的是 mysqldb;pymysql 模块也是第三方模块,需要手动安装;
两种方法差不多,我是用 mysql-connector 模块连接的;
# 导入数据库连接模块
import mysql.connector
# 创建数据库连接,返回一个连接对象
mydb = mysql.connector.connect(
host="localhost", # 数据库地址
user="root", # 用户名
passwd="root", # 密码
database="students_db" # 数据库名称
)
print(mydb)
# 返回数据库游标,用于操作数据库
mycursor = mydb.cursor()
# 执行 sql 语句创建数据库
mycursor.execute("create database students_db")
如果数据库已经存在,则会抛出异常:
# 查看所有已经存在的数据库
mycursor.execute("show databases")
for db in mycursor:
print(db)
输出结果:
# 导入数据库连接模块
import mysql.connector
# 创建数据库连接,返回一个连接对象
mydb = mysql.connector.connect(
host="localhost", # 数据库地址
user="root", # 用户名
passwd="root", # 密码
database="students_db" # 数据库
)
print(mydb)
如果数据库不存在,会抛出异常:
# 返回数据库游标,用于操作数据库
mycursor = mydb.cursor()
# 执行 sql 语句创建数据表
mycursor.execute("create table student (name varchar(20), age int)")
# 插入数据的 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)
# 插入数据的 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)
# 执行 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)
输出结果:
# 准备 sql 语句,参数用占位符 %s 表示
sql = "delete from student where name=%s"
value = ("jack", ) # 参数
# 执行 sql 语句删除数据
mycursor.execute(sql, value)
# 修改表数据的时候必须要提交才会生效
mydb.commit()
# 准备 sql 语句,参数用占位符 %s 表示
sql = "update student set age = %s where name = %s"
value = ("18", "lucy") # 参数
# 执行 sql 语句修改数据
mycursor.execute(sql, value)
# 修改表数据的时候必须要提交才会生效
mydb.commit()