首先,使用Python操作MySQL数据库这里我们需要使用到三方库PyMySQl
,利用本地的pip来下载我们所需要的第三方库。
根据上一篇文章python虚拟环境中继续安装pymysql
已激活的虚拟环境中可以使用如下命令安装pymysql
/www/wwwroot/Python/myenv/bin/pip3 install pymysql
可以通过命令查看第三方库是否安装成功
/www/wwwroot/Python/myenv/bin/pip3 list
接下来,就可以新建一个项目,然后进行对MySQL数据库的操作了。
# 导入第三方库
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='test')
✨补充connect函数的参数说明
host 数据库的地址,可以是IP地址或者主机名
user 用户名
password 密码
database 数据库名
port 数据库的端口号,默认为3306
charset 数据库的字符集,默认为utf8mb4
cursorclass 游标的类,默认为pymysql.cursors.DictCursor
use_unicode 是否使用Unicode编码,默认为True
connect_timeout 用于设置连接超时时间,其默认值为10秒
connect函数的返回值是一个连接对象,用于建立与MySQL服务器的连接。连接对象可以用于执行SQL语句、获取查询结果等操作。
接下来需要创建一个游标对象,游标对象用于管理查询结果集。游标对象可以用于遍历查询结果集,也可以用于执行多条SQL语句。然后执行SQL查询语句查询数据,并将查询到的结果返回并打印,最后关闭连接。
# 创建游标
cursor = conn.cursor()
# 执行SQL语句
cursor.execute("SELECT * FROM users")
# 获取查询结果
rows = cursor.fetchall()
# 打印查询结果
print(rows)
# 关闭游标和连接
cursor.close()
conn.close()
✨补充connect函数常用方法
close() conn.close() 关闭连接
cursor() cursor = conn.cursor() 创建游标对象
execute() cursor.execute(sql) 执行SQL语句,sql表示要执行的SQL语句
executemany() cursor.executemany(sql, args) 批量执行SQL语句,sql表示要执行的SQL语句,args表示SQL语句中的参数
commit() conn.commit() 提交事务
ollback() conn.rollback() 回滚事务
setinputsizes() cursor.setinputsizes(size1, size2, …) 设置输入参数的大小,size1、size2等表示输入参数的大小
setoutputsize() cursor.setoutputsize(size) 设置输出参数的大小,size表示输出参数的大小
description属性 description = cursor.description 获取查询结果的描述信息
游标对象的常用方法
方法 语法 说明
fetchone() row = cursor.fetchone() 获取查询结果的第一行数据
fetchmany() row = cursor.fetchone() 获取查询结果的多行数据,size表示要获取的数据行数
fetchall() rows = cursor.fetchall() 获取查询结果的所有数据
nextset() cursor.nextset() 获取下一个查询结果集
close() cursor.close() 关闭游标对象
lastrowid属性 id = cursor.lastrowid 获取最后一行数据的ID
以上就是对MySQL数据库的基本操作,完整代码和运行结果如下:
完整代码
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='test')
# 创建游标
cursor = conn.cursor()
# 执行SQL语句
cursor.execute("SELECT * FROM users")
# 获取查询结果
rows = cursor.fetchall()
# 打印查询结果
print(rows)
# 关闭游标和连接
cursor.close()
conn.close()
查询数据
import pymysql
# 连接数据库
# host表示数据库的地址,user表示用户名,password表示密码,database表示数据库名。
coon = pymysql.connect(host='localhost', user='root', password='123456', database='test')
# 创建游标
cursor = coon.cursor()
# 执行SQL语句 查询全部数据
cursor.execute("SELECT * FROM users")
# 获取查询结果 此时获取全部数据
rows = cursor.fetchall()
# 获取查询结果 此时获取第一条数据
# rows = cursor.fetchone()
# 获取查询结果 此时获取多条数据
# rows = cursor.fetchmany(2)
# 打印结果
print(rows)
# 关闭游标和连接
cursor.close()
coon.close()
新增数据
import pymysql
# 连接数据库
# host表示数据库的地址,user表示用户名,password表示密码,database表示数据库名。
coon = pymysql.connect(host='localhost', user='root', password='123456', database='test', autocommit=True)
# 创建游标
cursor = coon.cursor()
# 执行SQL语句 新增数据 并返回影响行数
rows = cursor.execute('INSERT INTO user(name, age) VALUES ("小明", 20)')
# 手动提交
# coon.commit()
# 打印结果
print(rows)
# 关闭游标和连接
cursor.close()
coon.close()
🎯值得注意的是,如果遇到插入数据不报错但是未成功插入的情况,这是因为在Java中,jdbc默认自动帮我们提交事务。但在Python中,则需要自己手动提交一下,有两种解决方式:
1.在连接数据库时加上autocommit=True(自动提交事务),这种方式在执行execute时就会立即向数据库发出操作请求,完成插入操作
2.在进行数据库的增删改操作时,需要在具体操作后添加commit()函数,手动提交事务,保证在执行操作的时候,能立刻向数据库发送请求。
修改数据
import pymysql
# 连接数据库
# host表示数据库的地址,user表示用户名,password表示密码,database表示数据库名。
coon = pymysql.connect(host='localhost', user='root', password='123456', database='tset', autocommit=True)
# 创建游标
cursor = coon.cursor()
# 执行SQL语句 新增数据 并返回影响行数
rows = cursor.execute('UPDATE user SET age=25 WHERE name="张三"')
# 手动提交
# coon.commit()
# 打印结果
print(rows)
# 关闭游标和连接
cursor.close()
coon.close()
删除数据
import pymysql
# 连接数据库
# host表示数据库的地址,user表示用户名,password表示密码,database表示数据库名。
coon = pymysql.connect(host='localhost', user='root', password='123456', database='test', autocommit=True)
# 创建游标
cursor = coon.cursor()
# 执行SQL语句 新增数据 并返回影响行数
rows = cursor.execute('DELETE FROM user WHERE name="张丽"')
# 手动提交
# coon.commit()
# 打印结果
print(rows)
# 关闭游标和连接
cursor.close()
coon.close()
以上就是基于Python对MySQL数据库的一些基本操作,在编写代码的同时,需要注意数据库连接的信息是否有误,SQL语句是否正确,以及使用方法是否规范,以保证在运行时,不会出错。当然,遇到错误时,应及时寻找错误并纠正,保证程序可执行性。
☃️封装数据库操作
在实际开发当中,我们并不是每一次连接数据库都需要单独再创建一个新的文件,然后一次又一次反复的配置和具体操作,这样做无疑加大了业务工作量,同时也降低了代码的可维护性和安全性,所以,通常,我们都是单独把数据库操作封装成一个类,需要使用的时候,只需要调用这个类就可以实现具体操作,并且,封装数据库操作可以将数据库操作相关的代码集中在一起,便于阅读和维护,将常用的数据库操作封装成函数,可以在多个地方复用,避免重复编写相同的代码,同时,我们可以根据需要修改数据库操作的实现,而不需要修改调用方的代码,又避免了直接操作数据库,减少了出错的可能性,提高了代码的安全性。
# 简单封装
# 导入第三方库
import pymysql
#连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='test')
# 创建游标对象
cursor = conn.cursor()
# 定义数据库操作函数
# 添加数据
def add_user(name, age):
#具体SQL语句可根据自己实际需求编写
sql = "INSERT INTO users(name, age) VALUES (%s, %s)"
cursor.execute(sql, (name, age))
#提交事务
conn.commit()
# 修改数据
def update_user(name, age):
#具体SQL语句可根据自己实际需求编写
sql = "UPDATE users SET age=%s WHERE name=%s"
cursor.execute(sql, (age, name))
#提交事务
conn.commit()
# 删除数据
def delete_user(name):
#具体SQL语句可根据自己实际需求编写
sql = "DELETE FROM users WHERE name=%s"
cursor.execute(sql, (name,))
#提交事务
conn.commit()
# 查询数据
def query_user():
#具体SQL语句可根据自己实际需求编写
sql = "SELECT * FROM users"
cursor.execute(sql)
result = cursor.fetchall()
return result
# 调用数据库操作函数
add_user('Tom', 20)
update_user('Tom', 21)
delete_user('Tom')
result = query_user()
#关闭游标和连接
cursor.close()
conn.close()
上述代码只是一个简单的封装,具体封装步骤要根据自己的业务实现逻辑进行设计,同时也只是提供封装的思路,供小伙伴们学习和参考。将数据库的具体操作操作封装成一个类的话,又比上述代码复杂一点,但实际运用也更为广泛,同时,也进一步简化了对数据库的具体操作,只需要用到的时候调用即可。
🔊总结
以上就是Python数据库编程的基本操作,对数据库的操作在实际开发过程中也很常用,所以,希望小伙伴们在看完文章后,能够掌握Python连接以及操作MySQL数据库的方法,在实际应用场景中,根据自己业务需要,对数据库操作进行具体设计,对数据库操作进行封装,提高代码的可读性、可维护性、复用性和安全性。同时,注意连接数据库时要指定正确的数据库地址、用户名、密码和数据库名;执行SQL语句时要注意SQL语句的正确性;获取查询结果时要注意查询结果的类型和数量;关闭游标和连接时要确保游标和连接已经正确关闭。