为pyodbc创建类似于PHP PDO的DSN,这可能吗?
我用PHP PDO连接了一个MySql数据库,运行得很好。我的代码大概是这样的:
$dsn = 'mysql:host=localhost;dbname=database_name';
$user_db = 'admin';
$password = 'password';
$pdo = new PDO($dsn, $user_db, $password);
现在我需要从一个python脚本中加载同样的数据库,而我必须使用pypodbc模块。
但是我遇到了一些问题:
如果我在Python中这样做:
pyodbc.connect('DRIVER={MySQL};SERVER=localhost;DATABASE=database_name;UID=admin;PWD=password;')
我在日志中得到了一个错误:
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]无法打开 lib '/usr/lib64/libmyodbc5.so' : 找不到文件 (0) (SQLDriverConnect)")
如果我检查一下/etc/odbcinst.ini,我可以看到:
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
我尝试通过YUM安装mysql-connector-odbc这个包,结果得到了mysql-connector-odbc.x86_64 0:5.1.5r1144-7.el6。
然后运行我的脚本时,我又遇到了一个新错误:
/usr/local/bin/python2.7: 重新定位错误: /usr/lib64/libmyodbc5.so: 符号 strmov, 版本 libmysqlclient_16 在文件 libmysqlclient_r.so.16 中未定义,链接时引用
看起来这个版本和我使用的MySql版本5.5.37-cll - MySQL Community Server (GPL)不兼容。
我执行了YUM REMOVE来恢复之前的配置。
那现在该怎么办呢?有什么建议吗?谢谢!
我的配置:
我的服务器:CENTOS 6.6 x86_64 virtuozzo
MySql:5.5.37-cll - MySQL Community Server (GPL)
1 个回答
1
终于我解决了这个问题!
yum install unixODBC-devel
yum install mysql-connector-odbc
yum install openssl098e
然后:
rpm -ivh libmysqlclient16-5.1.69-1.w5.x86_64.rpm
现在这个
pyodbc.connect('DRIVER={MySQL};SERVER=localhost;DATABASE=database_name;UID=admin;PWD=password;')
可以正常工作了!! 太棒了!