经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
pymysql模块 - 小杨-先生
来源:cnblogs  作者:小杨-先生  时间:2021/6/7 9:17:57  对本文有异议

一、python连接数据库

基本格式:

  1. import pymysql
  2. ?
  3. db = pymysql.connect(host='127.0.0.1', # 数据库IP
  4. user='root', # 用户
  5. password='123', # 密码
  6. database='staff') # 数据库
  7. ?
  8. # 使用 cursor() 方法创建一个游标对象 cursor
  9. cursor = db.cursor()
  10. ?
  11. # 使用 execute() 方法执行SQL语句
  12. cursor.execute('select version()')
  13. ?
  14. # 使用 fetchone() 方法获取单条数据
  15. data = cursor.fetchone()
  16. ?
  17. # 打印获取结果
  18. print(data)
  19. ?
  20. db.close() # 关闭数据库连接

创建表操作:

  1. import pymysql
  2. ?
  3. # 打开数据库连接
  4. db = pymysql.connect(host='127.0.0.1',
  5. user='root',
  6. password='123',
  7. database='staff')
  8. ?
  9. cursor = db.cursor() # 创建一个游标对象
  10. ?
  11. # 使用execute() 方法执行SQL,如果 employee 表存在则删除
  12. cursor.execute('DROP TABLE IF EXISTS employee')
  13. ?
  14. # 使用预处理语句创建 employee 表
  15. sql = """CREATE TABLE EMPLOYEE (
  16. FIRST_NAME CHAR(20) NOT NULL,
  17. LAST_NAME CHAR(20),
  18. AGE INT,
  19. SEX CHAR(1),
  20. INCOME FLOAT )"""
  21. ?
  22. # 运行预处理语句
  23. cursor.execute(sql)
  24. db.close() # 关闭数据库连接

数据插入操作:

  1. import pymysql
  2. ?
  3. db = pymysql.connect(host='127.0.0.1',
  4. user='root',
  5. password='123',
  6. database='staff')
  7. ?
  8. cursor = db.cursor()
  9. ?
  10. # SQL 插入语句
  11. sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
  12. LAST_NAME, AGE, SEX, INCOME)
  13. VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
  14. ?
  15. try:
  16. cursor.execute(sql) # 执行SQL语句
  17. db.commit() # 提交到数据库执行
  18. except:
  19. db.rollback() # 如果发生错误则回滚
  20. ?
  21. db.close()

数据查询操作:

python查询MySQL使用 fetchone( ) 方法获取单条数据,使用 fetchall( ) 方法获取多条数据

fetchone( ):该方法获取下一个查询结果集,结果集是一个对象

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

rowcount:这是一个只读属性,并返回执行 execute( ) 方法后影响的行数

  1. # fetchone方法:
  2. import pymysql
  3. ?
  4. db = pymysql.connect(host='127.0.0.1',
  5. user='root',
  6. password='123',
  7. database='staff')
  8. ?
  9. cursor = db.cursor()
  10. sql = 'select * from employee'
  11. cursor.execute(sql)
  12. data = cursor.fetchone()
  13. print(data)
  14. db.close()
  15. ?
  16. # 输出
  17. ('Mac', 'Mohan', 20, 'M', 2000.0)
  18. ?
  19. # ------------------------------------------------------------------------------
  20. # fetchall方法:
  21. import pymysql
  22. ?
  23. db = pymysql.connect(host='127.0.0.1',
  24. user='root',
  25. password='123',
  26. database='staff')
  27. ?
  28. cursor = db.cursor()
  29. sql = 'select * from employee'
  30. cursor.execute(sql)
  31. data = cursor.fetchall()
  32. print(data)
  33. db.close()
  34. ?
  35. # 输出
  36. (('Mac', 'Mohan', 20, 'M', 2000.0), ('yang', 'xiao', 18, 'M', 3000.0), ('hong', 'xiao', 18, 'F', 3000.0))
  37. ?
  38. # --------------------------------------------------------------------------------
  39. # rowcount方法
  40. import pymysql
  41. ?
  42. db = pymysql.connect(host='127.0.0.1',
  43. user='root',
  44. password='123',
  45. database='staff')
  46. ?
  47. cursor = db.cursor()
  48. sql = 'select * from employee'
  49. cursor.execute(sql)
  50. data = cursor.rowcount
  51. print(data)
  52. db.close()
  53. ?
  54. # 输出
  55. 3

数据更新操作:

  1. import pymysql
  2. ?
  3. db = pymysql.connect(host='127.0.0.1',
  4. user='root',
  5. password='123',
  6. database='staff')
  7. ?
  8. cursor = db.cursor()
  9. ?
  10. # 改之前
  11. cursor.execute("select * from employee where sex = 'F'")
  12. data1 = cursor.fetchone()
  13. print('改之前:', data1)
  14. ?
  15. # sql 更新语句
  16. sql = "update employee set age = age+1 where sex = 'F'"
  17. ?
  18. try:
  19. cursor.execute(sql) # 执行SQL语句
  20. db.commit() # 提交到数据库执行
  21. except:
  22. db.rollback() # 发生错误时回滚
  23. ?
  24. # 改了之后
  25. cursor.execute("select * from employee where sex = 'F'")
  26. data2 = cursor.fetchone()
  27. print('改之后:', data2)
  28. db.close()
  29. ?
  30. # 输出
  31. 改之前: ('hong', 'xiao', 22, 'F', 3000.0)
  32. 改之后: ('hong', 'xiao', 23, 'F', 3000.0)

数据删除操作:

  1. import pymysql
  2. ?
  3. db = pymysql.connect(host='127.0.0.1',
  4. user='root',
  5. password='123',
  6. database='staff')
  7. ?
  8. cursor = db.cursor()
  9. ?
  10. # 删除语句
  11. sql = 'delete from employee where age > 20'
  12. ?
  13. try:
  14. cursor.execute(sql) # 执行SQL语句
  15. db.commit() # 提交修改
  16. except:
  17. db.rollback()
  18. ?
  19. cursor.execute("select * from employee")
  20. data = cursor.fetchall()
  21. print(data)
  22. db.close()
  23. ?
  24. # 输出
  25. (('Mac', 'Mohan', 20, 'M', 2000.0), ('yang', 'xiao', 18, 'M', 3000.0))

二、数据备份

数据库的逻辑备份:

备份数据 在cmd命令行直接执行

  1. # 语法:
  2. # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
  3. ?
  4. ?
  5. # 示例:
  6. # 单库备份
  7. mysqldump -uroot -p123 db1 > db1.sql
  8. mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
  9. ?
  10. ?
  11. # 多库备份
  12. mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
  13. ?
  14. ?
  15. # 备份所有库
  16. mysqldump -uroot -p123 --all-databases > all.sql

数据恢复:

方法一:cmd命令行直接执行

方法二:恢复数据 在mysql中执行命令

  1. # 方法一:
  2. [root@egon backup]# mysql -uroot -p123 < /backup/all.sql
  3. ?
  4. ?
  5. # 方法二:
  6. mysql> use db1;
  7. mysql> SET SQL_LOG_BIN=0; #关闭二进制日志,只对当前session生效
  8. mysql> source /root/db1.sql

三、事物和锁

为了避免同一行数据,同时被两个或多个用户的SQL语句进行算数运算的操作,尽管在计算算到写入的过程很短,但还是有数据不安全的情况,所以要加一把锁,同一时间只能有同一个用户对同一行数据进行操作。

  1. begin; # 开启事务
  2. select * from emp where id = 1 for update; # 查询id值,for update添加行锁;
  3. update emp set salary=10000 where id = 1; # 完成更新
  4. commit; # 提交事务

原文链接:http://www.cnblogs.com/XiaoYang-sir/p/14841397.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号