반응형
mysql.connector python prepared 문이 byearray에 문자열을 반환하는 이유
환경: Python 3.5.2, MySQL.MariaDB Server 10.1.14의 커넥터 2.0.4
표준 커서가 일반 문자열을 반환하는 반면 준비된 커서가 문자열 값을 반환하는 이유는 무엇입니까?
같은 인스턴스가 있는 같은 콜의 경우 [Prepared Cursor Outputs]:
[(11, bytearray(b'1234567890'), None),
(17, bytearray(b'1234567799'), bytearray(b'abc@outlook.com'))]
표준 버전은 원하는 출력을 제공합니다.
[(11, '1234567890', None),
(17, '1234567799', 'abc@outlook.com')]
표준 버전 코드:
def query_userdb(query, arg):
retVal = None
cnx = mariadb.connect(**DB_CONFIG_USERS)
cursor = cnx.cursor()
cursor.execute(query, arg)
if cursor.rowcount != 0:
retVal = cursor.fetchall()
cnx.commit()
cnx.close()
return retVal
그리고 준비된 버전의 경우 커서 선언을 다음과 같이 변경했을 뿐입니다.
cursor = cnx.cursor(prepared=True)
준비된 커서가 문자열을 올바르게 반환하도록 하려면 어떻게 해야 합니까?
사용할 수 있는 문자열을 얻으려면:
my_bytearray.decode("utf-8")
목록 이해를 사용하는 경우:
retVal = [(id,col2.decode("utf-8"),col3.decode("utf-8") for id,col2,col3 in retVal]
취급하는 .None
의 값: " " " 。
retVal = [(id,col2.decode("utf-8"),(col3 if col3 is None else col3.decode("utf-8")) for id,col2,col3 in retVal]
언급URL : https://stackoverflow.com/questions/38288862/why-mysql-connecter-python-prepared-statement-returns-string-in-bytearray
반응형
'programing' 카테고리의 다른 글
Android 응용 프로그램의 QR 코드를 생성하는 방법은 무엇입니까? (0) | 2023.01.15 |
---|---|
외부 키 제약 테이블을 잘라내는 방법 (0) | 2023.01.15 |
컬렉션이 필요한 이유정렬은 Mergesort를 사용하지만 Arrays를 사용합니다.정렬은 안 되나요? (0) | 2023.01.15 |
CASE 또는 IF ELESSIF를 사용하는 MySQL select 문을 선택하십시오.결과를 얻는 방법을 잘 모르겠습니다. (0) | 2023.01.15 |
JavaScript에서 문자열의 동일성을 확인하는 올바른 방법은 무엇입니까? (0) | 2023.01.15 |