Python 个使用 pymysql 1.0.2 版本 无法使用 execute 函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 个使用 pymysql 1.0.2 版本 无法使用 execute 函数?相关的知识,希望对你有一定的参考价值。

Python 个使用 pymysql 1.0.2 版本 无法使用 execute 函数

环境:Python 3.8 pymysql1.0.2 版本

代码如下:

import pymysql
con = pymysql.connect(host=host,
port=port,
user=user,
password=password
charset='utf8')

sql= 'SELECT * FROM * LIMIT 5;'

with con as cur:
cur.execute(sql)
res = cur.fetchall()
cur.close()
print(res)
确认数据库能正常连接,与 SQL 查询语句正常,运行时错误如下:
AttributeError: 'Connection' object has no attribute 'execute'

参考技术A

首先赞一下在提问的时候写明了环境信息,以及给全了相关代码

修改后的代码

pymysql.connect 会返回一个 Connection 类型变量,execute 是 Cursor 类中实现的方法,因此需要用 cur = con.cursor() 来获取游标变量。

追问

已经找到找到了 在pymysql0.9的版本是可以用with 上下文管理器去实现的。但在1.0以上就无法使用了with上下文管理器

mysql客户端pymysql在python下性能比较

参考技术A

python下mysql的客户端主流有三个pymysql, mysqldb 和 mysql connector。很多人在选择客户端时,没有什么要求,都是按照前人或者经验主义选择,但是有真的研究他们之间的性能差别,以及是否符合你的项目需要,或者遇到性能瓶颈时,是否了解他们之间的差别。

本文将从2个维度来分析他们的性能,一个是直接使用,另一个是使用orm辅助使用,来对比三个的性能差别。

mysql的python客户端目前市场主流有三个,分别是 mysqldb (mysqlclient), mysql connector python 和 pymysql。

mysqldb (mysqlclient) 是mysql官方推出基于C库来写mysql连接库,非纯python。之前mysqldb只支持python2,后面mysqlclient在mysqldb的基础上fork来支持python3。

mysql connector for python 是mysql官方推出的纯python实现的连接库。

pymysql 是纯python写的主流连接库。

查询库表返回 100 条记录

测试方法

重复操作100次

测试结果

测试结论

mysqlclient 效果比其他两个快近100%, 毕竟是依赖c的库,性能是有保障的,connector跟pymysql的就不分上下很接近。

测试方法

重复操作100次

测试结果

测试结论

发现connector比其他两个快将近80%多,其余两个效果也很接近。但是这里会发现使用ORM会整体慢1个数据级。

如果是追求极致性能,建议使用mysqlclient,如果想使用ORM,建议使用mysql connector for python, 后面附带源码。

https://github.com/roger777luo/msyql_client_bench.git

以上是关于Python 个使用 pymysql 1.0.2 版本 无法使用 execute 函数?的主要内容,如果未能解决你的问题,请参考以下文章

mysql客户端pymysql在python下性能比较

使用 pymysql 插入表

python如何使用pymysql模块

Python/MySQL(pymysql使用)

python安装PyMySQL

Python 安装pyMySQL过程记录