为pyodbc创建一个类似于PHP PDO的DSN。可能吗?

时间:2014-10-31 01:35:49

标签: python mysql odbc pyodbc

我使用 PHP PDO 连接 MySql Db,效果很好。我有类似的东西:

$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] [司机管理员]无法打开   lib' /usr/lib64/libmyodbc5.so' :找不到文件(0)   (的SQLDriverConnect)&#34)

如果我检查/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社区服务器(GPL)

我做了YUM REMOVE以恢复以前的conf。

现在?有什么建议 ?的谢谢!

我的配置:

我的服务器:CENTOS 6.6 x86_64 virtuozzo MySql:5.5.37-cll - MySQL社区服务器(GPL)

1 个答案:

答案 0 :(得分: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;')

作品!耶!