一, 数据库的安装和连接
1, PyMySQL 的安装
pip install pymysql
2 ,python 连接数据库
- import pymysql
- db = pymysql.connect("数据库 ip","用户","密码","数据库" ) # 打开数据库连接
- cursor.execute("SELECT VERSION()") # 使用 execute() 方法执行 SQL 查询
- data = cursor.fetchone() # 使用 fetchone() 方法获取单条数据
- print ("Database version : %s" % data)
- db.close() # 关闭数据库连接
更多参数版
- import pymysql
- conn = pymysql.connect(
- host='localhost', user='root', password="root",
- database='db', port=3306, charset='utf-8',
- )
- cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
二, 创建表操作
- import pymysql
- # 打开数据库连接
- db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
- # 使用 cursor() 方法创建一个游标对象 cursor
- cursor = db.cursor()
- # 使用 execute() 方法执行 SQL, 如果表存在则删除
- cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
- # 使用预处理语句创建表
- sql = """CREATE TABLE EMPLOYEE (
- FIRST_NAME CHAR(20) NOT NULL,
- LAST_NAME CHAR(20),
- AGE INT,
- SEX CHAR(1),
- INCOME FLOAT )"""
- cursor.execute(sql)
- # 关闭数据库连接
- db.close()
三, 操作数据
1, 插入操作
- import pymysql
- # 打开数据库连接
- db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
- # 使用 cursor() 方法获取操作游标
- cursor = db.cursor()
- # SQL 插入语句
- sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
- LAST_NAME, AGE, SEX, INCOME)
- VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
- try:
- cursor.execute(sql) # 执行 sql 语句
- db.commit() # 提交到数据库执行
- except:
- db.rollback() # 如果发生错误则回滚
- # 关闭数据库连接
- db.close()
2, 查询操作
Python 查询 MySQL 使用 fetchone() 方法获取单条数据, 使用
fetchall(): 方法获取多条数据.
fetchone(): 该方法获取下一个查询结果集. 结果集是一个对象
fetchall(): 接收全部的返回结果行.
rowcount(): 这是一个只读属性, 并返回执行 execute() 方法后影响的行数.
- import pymysql
- # 打开数据库连接
- db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
- # 使用 cursor() 方法获取操作游标
- cursor = db.cursor()
- # SQL 查询语句
- sql = "SELECT * FROM EMPLOYEE WHERE INCOME> %s" % (1000)
- try:
- cursor.execute(sql) # 执行 SQL 语句
- results = cursor.fetchall() # 获取所有记录列表
- for row in results:
- fname = row[0]
- lname = row[1]
- age = row[2]
- sex = row[3]
- income = row[4]
- # 打印结果
- print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))
- except:
- print("Error: unable to fetch data")
- # 关闭数据库连接
- db.close()
3, 更新操作
- import pymys
- # 打开数据库连接
- db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
- # 使用 cursor() 方法获取操作游标
- cursor = db.cursor()
- # SQL 更新语句
- sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX ='%c'"% ('M')
- try:
- cursor.execute(sql) # 执行 SQL 语句
- db.commit() # 提交到数据库执行
- except:
- db.rollback() # 发生错误时回滚
- # 关闭数据库连接
- db.close()
4, 删除操作
- import pymysql
- # 打开数据库连接
- db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
- # 使用 cursor() 方法获取操作游标
- cursor = db.cursor()
- # SQL 删除语句
- sql = "DELETE FROM EMPLOYEE WHERE AGE> %s" % (20)
- try:
- cursor.execute(sql) # 执行 SQL 语句
- db.commit() # 提交修改
- except:
- db.rollback() # 发生错误时回滚# 关闭连接
- db.close()
四, 数据备份
1, 数据库的逻辑备份
- # 语法:
- # mysqldump -h 服务器 -u 用户名 -p 密码 数据库名 > 备份文件. sql
- # 示例:
- # 单库备份
- mysqldump -uroot -p123 db1> db1.sql
- mysqldump -uroot -p123 db1 table1 table2> db1-table1-table2.sql
- # 多库备份
- mysqldump -uroot -p123 --databases db1 db2 MySQL db3> db1_db2_mysql_db3.sql
- # 备份所有库
- mysqldump -uroot -p123 --all-databases> all.sql
2, 数据恢复
- # 方法一:
- [[email protected] backup]# MySQL -uroot -p123 </backup/all.sql
- # 方法二:
- MySQL> use db1;
- MySQL> SET SQL_LOG_BIN=0; #关闭二进制日志, 只对当前 session 生效
- MySQL> source /root/db1.sql
五, 事务和锁
- begin; # 开启事务
- select * from emp where id = 1 for update; # 查询 id 值, for update 添加行锁;
- update emp set salary=10000 where id = 1; # 完成更新
- commit; # 提交事务
来源: http://www.bubuko.com/infodetail-3327023.html