数据库的安装和连接

PyMySQL的安装

pip install PyMySQL

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

操作数据

插入操作

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()
 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 )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try: cursor.execute(sql) # 执行sql语句
db.commit() # 执行sql语句
except:
db.rollback() # 发生错误时回滚 # 关闭数据库连接
db.close()

另一种形式

查询操作

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

    更新操作

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

    删除操作

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

    数据备份

    数据库的逻辑备份

    #语法:
    # 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

    数据恢复

    #方法一:
    [root@egon 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; # 提交事务

最新文章

  1. 用 Navicat 写mysql的游标
  2. Flask, Tornado, GEvent, 以及它们的结合的性能比较
  3. POJ 2531 Network Saboteur
  4. Scut:账号服务器问题修正
  5. 关于react-redux中的connect函数
  6. Cloud9 on Docker镜像发送
  7. Linux驱动模型解析bus之platform bus
  8. win10下配置默认软件(转)
  9. 448. Find All Numbers Disappeared in an Array&amp;&amp;645. Set Mismatch
  10. [总结]jQuery之选择器集合
  11. Python 常用 代码片段
  12. 54. Spiral Matrix(剑指offer--19)
  13. Quartz入门
  14. iOS获取网络类型的四种方法
  15. html+css+js实现网页拼图游戏
  16. I.MX6 linux eGalaxTouch 自动获取设备节点
  17. JSON简介[转]
  18. Android Touch 事件总结
  19. 【题解】洛谷P1879 [USACO06NOV] Corn Fields(状压DP)
  20. CAP理论中的P到底是个什么意思

热门文章

  1. (十九)C语言之指针
  2. char能不能存储一个汉字
  3. php 获取域名
  4. springboot三种配置文件上传下载大小的配置
  5. 5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
  6. mysql数据库基本操作sql语言
  7. mysql sql常用语句
  8. 利用Calendar类判断是平年还是闰年
  9. linux常用命令(10)more命令
  10. AESTest