为pyodbc创建类似于PHP PDO的DSN,这可能吗?

1 投票
1 回答
953 浏览
提问于 2025-04-30 18:50

我用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;')

可以正常工作了!! 太棒了!

撰写回答