programing

공식 MySQL 커넥터에서 원하는 출력을 가져올 수 없습니다.

kingscode 2022. 10. 1. 21:14
반응형

공식 MySQL 커넥터에서 원하는 출력을 가져올 수 없습니다.

Python을 사용하여 MariaDB에 연결합니다.최근에 PyMy에서 전환했습니다.페이지에서 네이티브 커넥터에 대한 SQL을 사용해도 다음과 같은 간단한 코드를 사용할 수 없습니다.

a = mysql.connect(host='127.0.0.1', port=3306, user='root', db='db', passwd='1337')
b = a.cursor()
b.execute('SELECT * FROM accounts', multi=True)
b.execute('SELECT * FROM profile', multi=True)
print(b.fetchall())
a.commit()

모든 행이 인쇄될 줄 알았는데profile테이블은 어떤 이유로든 표시되지 않고 다음 오류와 함께 종료됩니다.

Traceback (most recent call last):
  File "<file>", line 142, in <module>
    print(b.fetchall())
  File "/usr/local/lib/python3.3/dist-packages/mysql/connector/cursor.py", line 676, in fetchall
    raise errors.InterfaceError("No result set to fetch from.")
mysql.connector.errors.InterfaceError: No result set to fetch from.

를 사용하고 있는 경우는,multi=True파라미터,cursor.execute()method는 결과를 얻기 위해 사용해야 하는 반복 가능한 개체를 반환합니다.문서의 섹션 8.3.4에 사용 예가 있습니다.

단, 예를 들어...와 같은 여러 문을 단일 쿼리에서 실행하는 경우에만 이 명령을 사용해야 합니다.

iterable = b.execute('SELECT * FROM accounts; SELECT * FROM profile', multi=True)
for item in iterable:
    print(item.fetchall())

...단, 이것은 PEP 249에 대한 비표준 확장입니다.

쿼리를 1개만 실행하면 되는 경우,multi인수...

b.execute('SELECT * FROM profile')
print(b.fetchall())

PEP 249에 준거하고 있습니다.

언급URL : https://stackoverflow.com/questions/17495190/cant-get-the-desired-output-in-the-official-mysql-connector

반응형