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


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")

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

Python学习笔记(三十一):连接 mysql 数据库_第1张图片

 

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

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

输出结果:

Python学习笔记(三十一):连接 mysql 数据库_第2张图片

 

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

# 导入数据库连接模块
import mysql.connector

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

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

Python学习笔记(三十一):连接 mysql 数据库_第3张图片

 

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)

输出结果:

Python学习笔记(三十一):连接 mysql 数据库_第4张图片

 

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()

 

你可能感兴趣的:(python学习笔记)