我正在使用
- pyodbc 3.0.3
- Python 2.7.12
- gnu/linux 4.4.0-59基因x86_64
- Ubuntu 16.04.1 LTS(Xenial Xerus(
- unixODBC 2.3.1
- ODBC 5.3(w(驱动程序
尝试传递连接字符串中的Unicode数据库名称时,我会得到错误
提供了一个Unicode连接字符串,但驱动程序没有Unicode Connect函数
我的代码看起来像
# -*- coding: utf-8 -*-
import pyodbc
dbname = u"डाटाबेस"
cstring = "DRIVER={MySQL};SERVER=192.168.8.25;PORT=3306;DATABASE="+dbname+";UID=root;PWD=root;CHARSET=utf8;"
"use_unicode=1"
connect = pyodbc.connect(cstring)
编辑1:
我已将PYODBC更新为4.0.21版本。上述错误出现了,但遇到了另一个问题
import pyodbc
dbname = u"डाटाबेस"
cstring = "DRIVER={MySQL};SERVER=192.168.2.243;PORT=3306;DATABASE="+dbname+";UID=root;PWD=support@immune;CHARSET=utf8;"
"use_unicode=1"
connect = pyodbc.connect(cstring, encoding='utf-8')
当我运行此操作时,我会遵循错误
error =('hy000',u" [hy000] [unixodbc] [mysql] [odbc 5.3(w(驱动程序]未知数据库' xe0 xa4 xa4 xa1 xe0 xa4 xa4 xa4 xa4 xbe xbe xe0 xe0 xe0 xa4 xbe xe0 xa4 xac xe0 xa5 x87 x87 xe0 xa4 xa4 xb8'(1049((sqldriverConnect(
我能够通过从connect
调用中删除encoding='utf-8'
参数来重现您的问题并避免它。我的测试代码
# -*- coding: utf-8 -*-
import pyodbc
import sys
print("Python version: " + sys.version.replace("n", ""))
print("pyodbc version: " + pyodbc.version)
cnxn_str = (
u"Driver=MySQL;"
u"Server=192.168.1.144;"
u"Port=3307;"
u"Database=डाटाबेस;"
u"UID=root;PWD=whatever;"
)
cnxn = pyodbc.connect(cnxn_str)
print("driver name: " + cnxn.getinfo(pyodbc.SQL_DRIVER_NAME))
print("driver version: " + cnxn.getinfo(pyodbc.SQL_DRIVER_VER))
crsr = cnxn.cursor()
print(crsr.execute("SELECT txt FROM table1 WHERE id = 1").fetchval())
cnxn.close()
生产
Python version: 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609]
pyodbc version: 4.0.21
driver name: libmyodbc5w.so
driver version: 05.03.0010
उदाहरण