Python操作MySQL数据库

数据库的安装和连接

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;
posted @ 2019-06-02 21:10  言值  阅读(116)  评论(0编辑  收藏  举报