【问题标题】:Create a DSN for pyodbc similar to PHP PDO. Is it possible?为 pyodbc 创建一个类似于 PHP PDO 的 DSN。是否可以?
【发布时间】:2014-10-31 01:35:49
【问题描述】:

我使用 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][驱动管理器]无法打开 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 社区服务器 (GPL)

【问题讨论】:

    标签: python mysql odbc pyodbc


    【解决方案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;')
    

    有效!!是的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多