我正在尝试使用MySQL Connector / Python处理数据库。连接成功建立,例如我能够将新数据插入表中。 SELECT查询对于正常的整数或char值也可以正常工作。
但是当我尝试以int列(小,中,大,无所谓)执行SELECT查询时,我遇到了ValueError: invalid literal for int() with base 0: '00002'
如何重复:
创建一个表,其中类型为int unsigned zerofill
的列之一(或任何其他类型为zerofill
的整数)。例如,先执行CREATE TABLE test_table (id INT UNSIGNED ZEROFILL);
,然后执行INSERT INTO test_table VALUES (1), (2), (3);
尝试对包含零填充字段的SELECT查询执行cursor.execute(query),例如SELECT * FROM test_table;
应如何处理: 程序输出
ValueError: invalid literal for int() with base 0: '0000000001'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\user\Documents\testSQL.py", line 25, in <module>
cursor.execute(query)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\cursor_cext.py", line 272, in execute
self._handle_result(result)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\cursor_cext.py", line 163, in _handle_result
self._handle_resultset()
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\cursor_cext.py", line 651, in _handle_resultset
self._rows = self._cnx.get_rows()[0]
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection_cext.py", line 273, in get_rows
row = self._cmysql.fetch_row()
SystemError: <built-in method fetch_row of _mysql_connector.MySQL object at 0x000002555DDBC350> returned a result with an error set
当将数据库整数转换为python int()值时,似乎mysql-connector试图做int(some_number, base=0)
。但这实际上是一个以10为底的数字。如何避免这种错误?