Pypyodbc.DataError 数据库有问题
Pypyodbc.DataError trouble with database
我想弄清楚为什么我的测试程序在 python 中不起作用。
我可以从 MySql Workbench 访问数据库,而且我认为我在编程部分做的一切都是正确的,我还去了管理工具并将我的数据库添加到 ODBC 数据库源,这是我的测试程序,如果有人能找出问题所在:
import pypyodbc
conn = pypyodbc.connect("DSN=database")
def func():
l = []
cur = conn.cursor()
try:
cur.execute("SELECT foo FROM table")
except pypyodbc.DatabaseError:
pass
conn.commit()
for i in cur:
l.append(i)
conn.close()
cur.close()
func()
我得到的错误是:
Traceback (most recent call last):
File "D:/path/test.py", line 21, in <module>
func()
File "D:/path/test.py", line 14, in func
for i in cur.fetchall():
File "D:/path/test.py", line 1819, in fetchall
row = self.fetchone()
File "D:/path/test.py", line 1893, in fetchone
check_success(self, ret)
File "D:/path/test.py", line 986, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "D:/path/test.py", line 956, in ctrl_err
raise DataError(state,err_text)
pypyodbc.DataError: ('22018', '[22018] [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.5-10.0.17-MariaDB]')
错误 22018 是一个 "invalid character" 错误。一个常见的原因是试图使用 MySQL Connector/ODBC 的 ANSI(“(a)”)版本来检索 Unicode 数据。在这种情况下,解决方案是改用 Unicode(“(w)”)版本的驱动程序。
我想弄清楚为什么我的测试程序在 python 中不起作用。 我可以从 MySql Workbench 访问数据库,而且我认为我在编程部分做的一切都是正确的,我还去了管理工具并将我的数据库添加到 ODBC 数据库源,这是我的测试程序,如果有人能找出问题所在:
import pypyodbc
conn = pypyodbc.connect("DSN=database")
def func():
l = []
cur = conn.cursor()
try:
cur.execute("SELECT foo FROM table")
except pypyodbc.DatabaseError:
pass
conn.commit()
for i in cur:
l.append(i)
conn.close()
cur.close()
func()
我得到的错误是:
Traceback (most recent call last):
File "D:/path/test.py", line 21, in <module>
func()
File "D:/path/test.py", line 14, in func
for i in cur.fetchall():
File "D:/path/test.py", line 1819, in fetchall
row = self.fetchone()
File "D:/path/test.py", line 1893, in fetchone
check_success(self, ret)
File "D:/path/test.py", line 986, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "D:/path/test.py", line 956, in ctrl_err
raise DataError(state,err_text)
pypyodbc.DataError: ('22018', '[22018] [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.5-10.0.17-MariaDB]')
错误 22018 是一个 "invalid character" 错误。一个常见的原因是试图使用 MySQL Connector/ODBC 的 ANSI(“(a)”)版本来检索 Unicode 数据。在这种情况下,解决方案是改用 Unicode(“(w)”)版本的驱动程序。