mysql - pymysql 上的断言错误,但查询在控制台上有效(3 连接查询)
问题描述
我有一个查询连接 mysql 上的 3 个表,在控制台(和 mysql 工作台中)它工作得很好,但是当我尝试使用 pymysql 在我的 python 代码中执行相同的查询时,它会导致断言和协议错误。(这不会发生在我脚本上的任何其他查询中,为了确保这不是游标错误,我专门为此查询创建了一个游标)
我的代码:
mysql_conn = pymysql.connect(host=hostb, user=userb, passwd=passb, db=dbb, connect_timeout=5,cursorclass=pymysql.cursors.DictCursor, autocommit=True)
cursor4xx=mysql_conn.cursor()
qrypar= """ SELECT wr.report_id,wr.campaign_id as campaign_id,wr.created_at,wr.campaign_reach,wr.CR,wr.unique_audience,wr.avg_visits,wr.duration,wr.OTS,wr.GAV,wr.GRP,wr.total_audience,wr.cities,wr.weekdays,wr.ready,wr.screens,wr.zones,wr.advertisers,wr.weeks,wr.week_data,wc.campaign_name,wc.description,wc.ad_duration,wc.ad_quantity,wc.start_date,wc.end_date,wc.advertiser_id,dzr.digital_zone_id,dzr.results FROM reports wr join wave_campaigns wc ON wr.campaign_id = wc.campaign_id join digital_zone_reports dzr on dzr.campaign_id = wc.campaign_id where wr.ready = 1 order by wr.created_at desc """
cursor4xx.execute(qrypar)
data_campaign=cursor4xx.fetchall()
和我得到的错误
[ERROR] AssertionError: Protocol error, expecting EOF
Traceback (most recent call last):
File "/var/task/handler.py", line 174, in get_zones_data
cursor4xx.execute(qrypar)
File "/var/task/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/var/task/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/var/task/pymysql/connections.py", line 548, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/var/task/pymysql/connections.py", line 775, in _read_query_result
result.read()
File "/var/task/pymysql/connections.py", line 1163, in read
self._read_result_packet(first_packet)
File "/var/task/pymysql/connections.py", line 1235, in _read_result_packet
self._get_descriptions()
File "/var/task/pymysql/connections.py", line 1338, in _get_descriptions
assert eof_packet.is_eof_packet(), "Protocol error, expecting EOF"
作为进一步的参考,我正在使用 python3.8 并且代码在 AWS lambda 函数中执行,mysql db 也在 AWS RDS 上运行
解决方案
推荐阅读
- angularjs - UI - 使用不同的微服务 API 并将列表合并到网格视图中并允许用户对数据进行排序
- c# - 如何填充 DockPanel?
- python - 正则表达式:常量和变量字符混合的字符串
- java - 尝试获取集合时,Android Studio 不会重新设置 .collection 方法
- javascript - 三个按钮显示相同的内容。如何?
- dart - 即使构建成功且没有错误,也无法在 sublime text 3 中输出飞镖
- javascript - 如何找到动态生成的当前元素索引?
- difftime - 计算R中所有可能的“时间差”组合
- ionic-framework - 如何在 ionic 4 的浏览器(pwa)中使用社交分享插件?
- javascript - 在 JavaScript 函数中执行 Firestore 查询