目录
python连接mysql数据库
操作表与数据

详解
python连接mysql数据库
pymysql是一个第三方模块,需要通过pip install pymysql进行安装。
import pymysql# 连接mysql数据库conn = pymysql.connect(host='mysql服务器ip',port='mysql服务器端口(默认为3306)',user='mysql服务器用户名',password='mysql服务器用户密码',database='mysql服务器数据库',charset='utf8') # 注意:charset='utf8' 不能写成utf-8# 使用 cursor()方法 创建一个游标对象 cursorcursor = conn.cursor() # 创建一个游标对象,查询返回元组cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建一个游标对象,查询返回字典,占用空间多
(左右滑动查看完整python代码)
操作表与数据
创建表
import pymysql# 连接mysql数据库conn = pymysql.connect(host='mysql服务器ip',port='mysql服务器端口(默认为3306)',user='mysql服务器用户名',password='mysql服务器用户密码',database='mysql服务器数据库',charset='utf8')# 使用 cursor()方法 创建一个游标对象 cursorcursor = conn.cursor() # 创建一个游标对象,查询返回元组# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建一个游标对象,查询返回字典,占用空间多# 使用 execute()方法 执行sql,如果表存在则删除cursor.execute("DROP TABLE IF EXISTS user")# 创建表sql = '''CREATE TABLE user (NAME CHAR(20) NOT NULL,AGE INT,SEX CHAR(1),INCOME FLOAT)'''# 执行sqlcursor.execute(sql)# 关闭游标cursor.close()# 关闭数据库连接conn.close()
(左右滑动查看完整python代码)
操作数据(查询)
import pymysql# 连接mysql数据库conn = pymysql.connect(host='mysql服务器ip',port='mysql服务器端口(默认为3306)',user='mysql服务器用户名',password='mysql服务器用户密码',database='mysql服务器数据库',charset='utf8')# 使用 cursor()方法 创建一个游标对象 cursorcursor = conn.cursor() # 创建一个游标对象,查询返回元组# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建一个游标对象,查询返回字典,占用空间多sql = "SELECT * FROM user WHERE INCOME > %s" % (1000)try:cursor.execute(sql) # 执行SQL语句print(cursor.rowcount) # 获取查出多少行结果print(cursor.fetchone()) # 获取一条结果print(cursor.fetchmany(10)) # 获取10条结果print(cursor.fetchall()) # 获取全部结果except Exception as e:print(f"SQL执行失败:{e}")# 关闭游标cursor.close()# 关闭数据库连接conn.close()
(左右滑动查看完整python代码)
操作数据(增删改)
import pymysql# 连接mysql数据库conn = pymysql.connect(host='mysql服务器ip',port='mysql服务器端口(默认为3306)',user='mysql服务器用户名',password='mysql服务器用户密码',database='mysql服务器数据库',charset='utf8')cursor = conn.cursor() # 创建一个游标对象# 增sql = "INSERT INTO user(NAME,AGE, SEX, INCOME) \VALUES (%s, %s, %s, %s )" % \('pamela', 18, 'F', 1000)# 删sql = "DELETE FROM user WHERE AGE > %s" % (20)# 改sql = "UPDATE user SET AGE = AGE + 1 WHERE SEX = '%s'" % ('M')try:cursor.execute(sql) # 执行SQL语句conn.commit() # 提交到数据库执行,对存储的数据修改后需要commitexcept Exception as e:print(f"SQL执行失败:{e}")conn.rollback() # 如果发生错误则回滚cursor.close() # 关闭游标conn.close() # 关闭数据库连接
(左右滑动查看完整python代码)
注意:sql注入问题
给sql语句传参数,要注意sql注入的问题,传参数不要通过字符串拼接,要通过execute方法来传。
import pymysql# 连接mysql数据库conn = pymysql.connect(host='mysql服务器ip',port='mysql服务器端口(默认为3306)',user='mysql服务器用户名',password='mysql服务器用户密码',database='mysql服务器数据库',charset='utf8')cursor = conn.cursor() # 创建一个游标对象,查询返回元组# sql = "SELECT * FROM user WHERE INCOME > %s" % (1000)sql = "SELECT * FROM user WHERE INCOME > %s"try:cursor.execute(sql, (1000,)) # 执行SQL语句,在第二个参数中传参(把所有参数放在一个元组中)except Exception as e:print(f"SQL执行失败:{e}")cursor.close() # 关闭游标conn.close() # 关闭数据库连接
(左右滑动查看完整python代码)
其他
数据备份
语法:备份数据(在cmd命令行直接执行)mysqldump -h服务器 -u用户名 -p密码 数据库名 > 备份文件.sql#单库备份mysqldump -h127.0.0.1 -uroot -p123 db1 > db1.sqlmysqldump -h127.0.0.1 -uroot -p123 db1 table1 table2 > db1-table1-table2.sql#多库备份mysqldump -h127.0.0.1 -uroot -p123 --databases db1 db2 db3 > db1_db2_db3.sql#备份所有库mysqldump -h127.0.0.1 -uroot -p123 --all-databases > all.sql
(左右滑动查看完整内容)
数据恢复
语法:恢复数据(在mysql中执行命令)切换到一个要备份的数据库中source 备份文件.sql#方法一:命令行:mysql -uroot -p123 < backup/all.sql#方法二:mysql中:use db1;SET SQL_LOG_BIN=0; #关闭二进制日志,只对当前session生效source /root/db1.sql
(左右滑动查看完整内容)
事务和锁
begin; # 开启事务select * from user where NAME = 'pamela' for update; # 查询,for update添加行级锁(select语句后面加一个for update)update user set INCOME=10000 where NAME = 'pamela'; # 完成更新commit; # 提交事务,释放行级锁
(左右滑动查看完整内容)
文章转载自潘潘潘平,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




