Python:连接mysql数据库的三种方式,mysql.connector, pymysql, MYSQLdb

本文对比了三种Python数据库驱动器:mysql.connector, MySQLdb和pymysql,详细介绍了它们的特点、优缺点及使用方法。mysql.connector为官方提供,无需C库,但速度较慢;MySQLdb依赖C库,速度快但可移植性差;pymysql为纯Python实现,兼顾速度与可移植性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、关于PEP 249 

    PEP的全称是Python Enhancement Proposals,即Python增强提案Python改进建议书。

 其中PEP 249 -- Python Database API Specification v2.0,是关于数据库模块的规格说明书。在python当中,无论是mysql.connector还是pymysql,还是MYSQLdb,他们都遵循规格说明书,所以他们的API使用几乎是一样的,当然在规格说明书中列为可选项的,不同模块实现与否有差异。

二、三者的区别

    mysql-connector 是 MySQL 官方提供的驱动器, 它在Python中重新实现MySQL协议,它比较慢,但不需要C库,因此可移植性好。

    MySQLdb是一个对于_mysql的Python包装器。其中_mysql也是该作者开发的模块,它依赖C库,所以说MYSQLdb也是依赖C库的。因此它的可移植性不太好,但是由于是基于C库实现的,它的速度会快一些。一些开发者为了效率甚至直接使用_mysql模块。

    pymysql是由yutaka.matsubara开发维护的纯python实现的驱动器。它相对于mysql.connector, MYSQLdb来说比较年轻。它的效率和可移植性和mysql-connector理论上是差不多的。

三、使用

1.连接

import mysql.connector
import MySQLdb
import pymysql

conn1 = mysql.connector.connect(host='localhost',
                                user='root',
                                passwd='yourpasswd',
                                db='yourdb',
                                charset='utf8')

conn2 = MySQLdb.connect(host='localhost',
                        user='root',
                        passwd='yourpasswd',
                        db='yourdb',
                        charset='utf8')

conn3 = pymysql.connect(host='localhost',
                        user='root',
                        passwd='yourpasswd',
                        db='yourdb',
                        charset='utf8'
                        cursorclass=pymysql.cursors.DictCursor)

    pymysql可以支持查询结果为字典类型,只需要指定cursorclass是pymysql.cursors.DictCursor即可。

2.增删查改

 由于他们的API是一样的,这里只使用一种。

    (1)查询

conn = mysql.connector.connect(...)   #创建连接实例
cursor = conn.cursor()                #获取操作游标
sql1 = "select * from main limit 10"
cursor.execute(sql)
result1 = cursor.fetchall()   # 取出所有数据
result2 = cursor.fetchone()   # 取出第一条数据
result3 = cursor.fetchmany(5) # 取出结果中的五条数据
cursor.close()
conn.close()

  (2)增加, 删除,修改

conn = mysql.connector.connect(...)
cursor = conn.cursor()

# 1.增加数据
sql1 = "insert into tablename values (%s, %s, %s)"
cursor.execute(sql1,(1,2,3))
cursor.executemany(sql1,[(1,2,3),(4,5,6)])
conn.commit()

# 2.删除数据
sql2 = "delete from tablename where id=1000"
cursor.execute(sql2)
conn.commit()

# 3.更新数据
sql3 = "update tablename set columnname = %s where id=%s"
cursor.execute(sql3, (0,1230))
cursor.executemany(sql, [(0,1030),(2,1230)])
conn.commit()

cursor.close()
conn.close()

    值得注意的是,所有对数据库数据有修改的操作,需要conn.commit()才会真正地生效。你可以几条语句一起提交,也可以单独提交。

    另外无论是数字,还是字符串,标识均使用%s。

    executemany支持插入批量数据。

四、参考资料

【1】https://www.cnblogs.com/abella/p/10056875.html

【2】https://pypi.org/project/PyMySQL/

【3】https://www.python.org/dev/peps/pep-0249/

【4】http://mysql-python.sourceforge.net/MySQLdb.html

  如果文章对你有帮助的话,可以点个赞再走哦。

MySQL Connector是一个用于连接MySQL数据库的工具。它是一个官方提供的Python库,可以通过它来实现与MySQL数据库的交互。\[1\]你可以使用pip命令来安装mysql-connector库。连接数据库的步骤包括导入mysql.connector模块、建立连接、获取游标等。\[1\]在连接数据库时,你需要提供主机名、用户名、密码、数据库名称等信息。\[1\]另外,你还可以设置字符集开启自动提交功能。\[1\]MySQL Connector还提供了一些其他的功能,比如执行SQL语句、查询数据、插入、更新删除数据等。\[1\]如果你想了解更多关于MySQL Connector的详细信息,可以参考官方文档。\[1\] #### 引用[.reference_title] - *1* [Python使用mysql-connector连接数据库](https://blog.csdn.net/weixin_43335392/article/details/124701008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySQL Connector 编程](https://blog.csdn.net/weixin_36204992/article/details/114327422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [mysql-connector-java详解](https://blog.csdn.net/keyboard_/article/details/114337739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值