数据库的安装和连接
1. 安装
pip install PyMySQL
2. python连接数据库
import pymysql
# 连接数据库
conn = pymysql.connect(host=None, user=None, password="", database=None, port=0)
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
conn.close()
创建表操作
import pymysql
conn = pymysql.connect(host="localhost",user="root",password="123",database="db" )
# 使用 cursor() 方法创建一个游标 cursor
cursor = conn.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = 'create table t1 (id int primary key, name char(10), age int(4))'
cursor.execute(sql)
conn.close()
操作数据
插入操作
import pymysql
conn = pymysql.connect('127.0.0.1', 'root', '123', 'db', 3306)
cursor = conn.cursor()
# sql 插入语句
sql = 'insert into 表名 (id, name, age) values(1, "jack", 20)'
# 添加事务
try:
cursor.execute(sql) # 执行sql语句
conn.commit() # 提交到数据库执行
except:
conn.rollback() # 如果发生错误则回滚
conn.close()
查询操作
1. fetchone() # 获取单条数据, 获取下一个查询结果集。结果集是一个对象
2. fetchall() # 获取多条数据, 接收全部的返回结果行.
3. rowcount # 是一个只读属性,并返回执行execute()方法后影响的行数。
import pymysql
conn = pymysql.connect('127.0.0.1', 'root', '123', 'db', 3306)
cursor = conn.cursor()
# sql 查询语句
sql = "select * from 表名 where id > {}".format(5)
try:
cursor.execute(sql) # 执行sql语句
results = cursor.fetchall() # 获取所有记录列表
except:
conn.rollback()
conn.close()
# 注意:
游标中设置参数: cursor=pymysql.cursors.DictCursor, 会返回一个字典类型的数据
默认返回元组.
更新操作
import pymysql
conn = pymysql.connect('127.0.0.1', 'root', '123', 'db', 3306)
cursor = conn.cursor()
# sql 更新语句
sql = "update 表名 set `name`='jason' where id = 1"
# 添加事务
try:
cursor.execute(sql) # 执行sql语句
conn.commit() # 提交到数据库执行
except:
conn.rollback() # 如果发生错误则回滚
conn.close()
删除操作
import pymysql
conn = pymysql.connect('127.0.0.1', 'root', '123', 'db', 3306)
cursor = conn.cursor()
# sql 删除语句
sql = "delete from 表名 where id = 2"
# 添加事务
try:
cursor.execute(sql) # 执行sql语句
conn.commit() # 提交到数据库执行
except:
conn.rollback() # 如果发生错误则回滚
conn.close()
数据备份
数据库的逻辑备份
1. 语法:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
2. 示例:
1) 单库备份
mysqldump -uroot -p123 db1 > table1.sql
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
2) 多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
3) 备份所有库
mysqldump -uroot -p123 --all-databases > all.sql
数据恢复
方法一: (cmd中输入命令)
mysql -uroot -p123 < /backup/all.sql
方法二: (mysql中输入命令)
use db1;
SET SQL_LOG_BIN=0; #关闭二进制日志,只对当前session生效
source /root/db1.sql
事务和锁
1. 开启事务
begin;
2. 添加行锁: for update
select * from t1 where id = 1 for update; # 查询id值,并添加锁.
update t1 set salary=10000 where id = 1; # 完成更新
3. 提交事务
commit;