目录
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()方法 创建一个游标对象 cursor
cursor = 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()方法 创建一个游标对象 cursor
cursor = 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)'''
# 执行sql
cursor.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()方法 创建一个游标对象 cursor
cursor = 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() # 提交到数据库执行,对存储的数据修改后需要commit
except 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.sql
mysqldump -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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。