#mysql #aws-lambda #amazon-rds #pymysql
Вопрос:
У меня есть запрос, соединяющий 3 таблицы в mysql, на консоли (и в mysql workbench), он отлично работает, но когда я попытался выполнить тот же запрос в своем коде python с помощью pymysql, это вызывает ошибки утверждения и протокола. (этого не происходит ни с одним другим запросом в моем скрипте, чтобы убедиться, что это не ошибка курсора, я создал курсор исключительно для этого запроса)
мой код:
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 работает на AWS RDS