详解利用Python操作mysql数据库

朱雀 2020-09-05 16:06 1015阅读 0赞

MySQL(官方发音是“My es-kew-el”,但很多人都说成“My Sequel”)是目前最受欢迎的开源关系型数据库管理系统。 一个开源项目具有如此之竞争力实在是令人意外,它的流行程度正在不断地接近另外两个闭源的商业数据库系统: 微软的 SQL Server 和甲骨文的Oracle 数据库(MySQL 在 2010 年被甲骨文收购)。它的流程程度实在是名符其实。对大多数应用来说, MySQL 都是不二选择。它是一种非常灵活、稳定、功能齐全的 DBMS, 许多顶级的网站都在用它: YouTube、 Twitter 和Facebook等。
因为它受众广泛, 免费,开箱即用,所以它也是网络数据采集项目中常用的数据库。


1.与Python整合

Python 没有内置的 MySQL 支持工具。不过,有很多开源的库可以用来与 MySQL 做交互,Python 2.x 和 Python 3.x 版本都支持。最有名的一个库就是 PyMySQL(https://github.com/PyMySQL/PyMySQL)。

PyMySQL安装:

  1. pip install pymysql

连接数据库:

在进行本文以下内容之前需要注意:

  • 你有一个MySQL数据库,并且已经启动。
  • 你有可以连接该数据库的用户名和密码
  • 你有一个有权限操作的database

以下实例链接 Mysql 的 testdb(自己建的)数据库:

  1. import pymysql
  2. db = pymysql.connect(host='localhost',user='root',passwd='admin',db='testdb')
  3. cursor = db.cursor()
  4. cursor.execute("select version()")
  5. data = cursor.fetchone()
  6. print ("Database version : %s " % data)
  7. db.close()

执行以上脚本输出结果如下:

  1. Database version : ('5.6.41-log',)

创建数据库表

如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:

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

成功创建employee表:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70

数据库插入操作

以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录:

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("localhost", "root", "admin", "testdb")
  4. # 使用 cursor() 方法创建一个游标对象 cursor
  5. cursor = db.cursor()
  6. # 使用cursor()方法获取操作游标
  7. cursor = db.cursor()
  8. # SQL 插入语句
  9. sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
  10. LAST_NAME, AGE, SEX, INCOME)
  11. VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
  12. try:
  13. # 执行sql语句
  14. cursor.execute(sql)
  15. # 提交到数据库执行
  16. db.commit()
  17. except:
  18. # 如果发生错误则回滚
  19. db.rollback()
  20. # 关闭数据库连接
  21. db.close()
  22. print("succcess")

以下代码使用变量向SQL语句中传递参数:

  1. user_id = "test123"
  2. password = "password"
  3. con.execute('insert into Login values( %s, %s)' % \
  4. (user_id, password))

数据库查询操作

查询单条数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("localhost", "root", "admin", "testdb")
  4. # 使用 cursor() 方法创建一个游标对象 cursor
  5. cursor = db.cursor()
  6. # 使用cursor()方法获取操作游标
  7. cursor = db.cursor()
  8. # SQL 插入语句
  9. sql = """select * from employee where age=20"""
  10. # 执行sql语句
  11. cursor.execute(sql)
  12. # 提交到数据库执行
  13. ret = cursor.fetchone()
  14. print(ret)
  15. cursor.close()
  16. # 关闭数据库连接
  17. db.close()

查询多条数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("localhost", "root", "admin", "testdb")
  4. # 使用 cursor() 方法创建一个游标对象 cursor
  5. cursor = db.cursor()
  6. # 使用cursor()方法获取操作游标
  7. cursor = db.cursor()
  8. # SQL 插入语句
  9. sql = """select * from employee"""
  10. # 执行sql语句
  11. cursor.execute(sql)
  12. # 提交到数据库执行
  13. ret = cursor.fetchall()
  14. print(ret)
  15. cursor.close()
  16. # 关闭数据库连接
  17. db.close()

修改数据库

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("localhost", "root", "admin", "testdb")
  4. # 使用 cursor() 方法创建一个游标对象 cursor
  5. cursor = db.cursor()
  6. # SQL 修改语句
  7. sql = """update employee set age=%s where income=%s"""
  8. age = 22
  9. income = 2001
  10. try:
  11. # 执行sql语句
  12. cursor.execute(sql,[age,income])
  13. # 提交到数据库执行
  14. db.commit()
  15. except:
  16. # 如果发生错误则回滚
  17. db.rollback()
  18. cursor.close()
  19. # 关闭数据库连接
  20. db.close()
  21. print("succcess")

结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Zlcm1vbnRf_size_16_color_FFFFFF_t_70 1

删除操作

删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 21 的所有数据:

  1. import pymysql
  2. db = pymysql.connect(host='localhost',user='root',passwd='admin',db='testdb')
  3. # 使用cursor()方法获取操作游标
  4. cursor = db.cursor()
  5. # SQL 删除语句
  6. sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (21)
  7. try:
  8. # 执行SQL语句
  9. cursor.execute(sql)
  10. # 提交修改
  11. db.commit()
  12. except:
  13. # 发生错误时回滚
  14. db.rollback()
  15. # 关闭连接
  16. db.close()

对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

发表评论

表情:
评论列表 (有 0 条评论,1015人围观)

还没有评论,来说两句吧...

相关阅读