programing

값이 NULL인 DATTIME에서 결과를 가져올 때 python mariadb 커넥터 오류

telebox 2023. 10. 9. 22:29
반응형

값이 NULL인 DATTIME에서 결과를 가져올 때 python mariadb 커넥터 오류

음, 제 생각엔 mariadb 연결기가 뭔가 이상한 것 같은데요...

다음과 같은 테이블 행이 있습니다.

이드 표제목 카테고리 날짜_ 날짜_기한 내용을 파일 user_id
6 테스트7 10 2021-04-01 21:50:21 내용 7 빨대f9cdaf.txt 16

문제는 DATTIME 필드가 NULL(내 앱에서 date_due date는 필수 사항이 아님)이라는 것입니다.

execute() 메서드에 값을 전달한 후 fetchall() 메서드가 반환된 데이터를 다르게 구문 분석하는 것 같습니다.

첫 번째 경우가 잘 작동합니다. 두 번째 경우 "ValueError: year 0이 범위를 벗어남"을 반환합니다.

id=("6",)
statement1 = "select * from posts where id = 6"
statement2 = "select * from posts where id = ?"

db.cursor.execute(statement1)
result = db.cursor.fetchall()
for x in result:
     print(x)

db.cursor.execute(statement2, id)
result = db.cursor.fetchall()
for x in result:
     print(x)

커넥터를 나열하려고 했습니다. - 결과가 같습니다.

값 및 테이블 열 속성을 변경하려고 했습니다. - 결과는 같습니다.

버전에 문제가 있다고 생각하여 최신 파이썬, mariadb 서버 및 파이썬 커넥터(우분투 20.04에서)로 업데이트했습니다. - 동일한 결과

결과:

6, 'test 7', 10, datetime.datetime(2021, 4, 1, 21, 50, 21), None, 'content 7', 'strawsf9cdaf.txt', 16)
ValueError: year 0 is out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/project dir/main_test3.py", line 38, in <module>
    result = db.cursor.fetchall()
SystemError: <method 'fetchall' of 'mariadb.connection.cursor' objects> returned a result with an error set

Process finished with exit code 1

어떤 도움이라도 주시면 대단히 감사하겠습니다.

MariaDB Connector/Python에 버그가 있었는데 최근에 스스로 고쳤습니다.수정은 다음 버전(1.0.7)에서 사용할 수 있습니다.

날짜 "0000-00-00"은 Python에서 유효하지 않으므로 대신 None으로 변환해야 합니다.

보고해 주셔서 감사합니다.

언급URL : https://stackoverflow.com/questions/66963588/python-mariadb-connector-error-when-fetching-results-from-a-datetime-with-value

반응형