Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Posted dengl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁相关的知识,希望对你有一定的参考价值。

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

一丶安装

pip install PyMySQL

二丶pymysql连接数据库

### 语法:
    import pymysql                          # 导入py模块

    conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接
    cursor.execute("SELECT VERSION()")                    # 使用 execute() 方法执行 SQL 查询
    data = cursor.fetchone()                              # 使用 fetchone() 方法获取单条数据
    print ("Database version : %s " % data)
    conn.close()                                            # 关闭数据库连接

### 返回列表包着字典形式数据   
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)

### 返回列表包着元组形式数据   
cur = conn.cursor()

三丶pymysql创建表操作

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()

四丶数据操作

增: 推荐使用execute拼接sql

### 方式一:
    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()



### 方式二  : %s 代替字段,使用execute拼接sql语句
    
    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 (%s, %s,  %s,  %s,  %s )" %
           
    try:

       cursor.execute(sql,(*('Mac', 'Mohan', 20, 'M', 2000),))  # 执行sql语句
       db.commit()          # 执行sql语句
    except:
       db.rollback()        # 发生错误时回滚

    # 关闭数据库连接
    db.close()

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()

import pymysql
 
# 打开数据库连接
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()

查询

????????fetchone(): 获取一条记录

????????fetchmany(): 获取多条记录

?????????fetchall(): 接收全部返回的结果行

????????rowcount: 并返回执行execute()方法后影响的行数

import pymysql

# 创建连接对象
conn = pymysql.Connect('127.0.0.1', 'root', '123', 'day40', 3306)

## 创建  数据库游标对象
cur = conn.cursor()

sql = 'select * from book'

# 执行sql
cur.execute(sql)

# 查询结果
res1 = cur.fetchone()  # 查询一条  以元组的形式返回数据
res2 = cur.fetchmany(2)  # 查询多条
res3 = cur.fetchall()  # 查询全部

print(res1)     # 控制台打印结果
print(res2)
print(res3)

# 关闭连接
cur.close()
conn.close()

五丶数据库的数据备份

语法:

?????????mysqldump -h 服务器 -u用户名 -p密码 数据库名 >备份文件名.sql

# 数据库表备份
    # 单库备份
    mysqldump -uroot -p123 --databases db1 > db1.sql #(路径+文件名) 
    # 单表备份
    mysqldump -uroot -p123 db1 table1 > 数据库-表.sql #(路径+表文件名) 
    
    # 多库备份
    mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
    # 多表备份
    mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql

# 备份所有库
mysqldump -uroot -p123 --all-databases > all.sql 
### 数据恢复
    #方法一:
    [root@egon backup]# mysql -uroot -p123 < /backup/all.sql
    
    #方法二: 先创建一个名字一样的库, source导入sql语句
    mysql> use db1;
    mysql> SET SQL_LOG_BIN=0;   #关闭二进制日志,只对当前session生效
    mysql> source /root/db1.sq

六丶事务和锁

begin;      #开启事务
select * from 表 where id=1 for update ; # 查询id为1的值,  for update表示添加行级别锁
update 表 set name='abc' where id=1;     # 完成更新
commit;     #提交事务

以上是关于Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁的主要内容,如果未能解决你的问题,请参考以下文章

数据库进阶

Python全栈开发MySQL进阶

Python 与 MySQL 交互

Python 与 MySQL 交互

Python Pymysql

python-python与mysql交互(pymysql)