当前位置:   article > 正文

Python之PyMySQL操作详解_python pymysql

python pymysql

一、PyMysql简介

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2.x中则使用mysqldb。

Django中也可以使用PyMySQL连接MySQL数据库。

二、PyMySQL操作详解

2.1 PyMySQL安装

pip install pymysql

2.2 PyMySQL应用

2.2.1 基本使用

  1. # coding=utf8
  2. import sys
  3. import pymysql
  4. import time
  5. # 连接database
  6. conn = pymysql.connect(host="数据服务器IP", user="用户名",password="密码",database="数据库名",charset="utf8")
  7. # 得到一个可以执行SQL语句的光标对象
  8. cursor = conn.cursor()
  9. # 定义要执行的SQL语句
  10. sql = """
  11. CREATE TABLE user (
  12. id INT auto_increment PRIMARY KEY ,
  13. name CHAR(10) NOT NULL UNIQUE,
  14. age TINYINT NOT NULL
  15. )ENGINE=innodb DEFAULT CHARSET=utf8;
  16. """
  17. # 执行SQL语句
  18. cursor.execute(sql)
  19. # 关闭光标对象
  20. cursor.close()
  21. # 关闭数据库连接
  22. conn.close()

2.2.2 防止SQL注入

  1. # coding=utf8
  2. import sys
  3. import pymysql
  4. import time
  5. name = input("姓名:>>")
  6. age = input("年龄:>>")
  7. # 连接数据库
  8. conn = pymysql.connect(host="数据服务器IP", user="用户名",password="密码",database="数据库名",charset="utf8")
  9. # 获取光标,输入SQL语句并执行
  10. cursor = conn.cursor()
  11. # 自己拼接字符串,容易造成SQL注入问题
  12. sql1 = "select * from user where name='%s' and age='%s';"%(name,age)
  13. ret1 = cursor.execute(sql1)
  14. # 让pymysql来拼接,防止SQL注入
  15. sql2 = "select * from user where name=%s and age=%s;"
  16. ret2 = cursor.execute(sql2,[name,age])
  17. # 关闭光标和连接
  18. cursor.close()
  19. conn.close()
  20. print(ret2)

2.2.3 用事务处理数据库操作

  1. # coding=utf8
  2. import sys
  3. import pymysql
  4. import time
  5. # 连接数据库
  6. conn = pymysql.connect(host="数据服务器IP", user="用户名",password="密码",database="数据库名",charset="utf8")
  7. # 获取光标,输入SQL语句并执行
  8. cursor = conn.cursor()
  9. # 写SQL语句(ignore 忽略已存在的数据,保证批量添加全部执行)
  10. sql = "INSERT IGNORE INTO user(name,age) VALUES(%s,%s);"
  11. name1 = "王芳"
  12. age1 = 29
  13. name2 = "刘广"
  14. age2 = 31
  15. try:
  16. # 单条添加
  17. #cursor.execute(sql, [name1, age1])
  18. # 多条添加
  19. cursor.executemany(sql, ((name1, age1),(name2, age2)))
  20. # 把修改提交到数据库
  21. conn.commit()
  22. except Exception as e:
  23. conn.rollback() # 执行SQL语句有问题或提交有异常都回滚
  24. cursor.close()
  25. conn.close()

2.2.4 动态获取数据

  1. # coding=utf8
  2. import sys
  3. import pymysql
  4. import time
  5. # 连接数据库
  6. conn = pymysql.connect(host="数据服务器IP", user="用户名",password="密码",database="数据库名",charset="utf8")
  7. # 获取光标,输入SQL语句并执行
  8. cursor = conn.cursor()
  9. # 查询数据
  10. sql = """
  11. SELECT * FROM user LIMIT 2,10;
  12. """
  13. cursor.execute(sql)
  14. # 获取所有查询到的结果
  15. ret1 = cursor.fetchall()
  16. print(ret1)
  17. # 从查询语句中获取一条查询结果
  18. # ret2 = cursor.fetchone()
  19. # print(ret2)
  20. # 获取相应的行数
  21. # ret3 = cursor.fetchmany(2)
  22. # print(ret3)
  23. # 返回执行的sql语句
  24. # ret4 = cursor.mogrify(sql)
  25. # print(ret4)
  26. conn.commit()
  27. cursor.close()
  28. conn.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/634737
推荐阅读
相关标签
  

闽ICP备14008679号