如何在 Iron python 上安装和使用 sqlobject+mysql?
Posted
技术标签:
【中文标题】如何在 Iron python 上安装和使用 sqlobject+mysql?【英文标题】:How to install and use sqlobject+mysql on iron python? 【发布时间】:2012-08-01 22:39:59 【问题描述】:是否可以使用sqlobject 从 Iron python 连接到 mysql 数据库?如果是这样,怎么做?我必须安装什么?
我为 cpython 安装了 sqlobject,它工作正常,但如果我在 ironpython 中使用相同的包,我会得到“ImportError:没有名为 _mysql 的模块”。我理解这意味着 Ironpython 无法加载访问 mysql API 所需的基于 C 的 .dll。有什么解决方法,或者有什么解决方法?
【问题讨论】:
如果您查看此link,它显示了如何使用 Odbc 进行连接,但安装我不知道您是否已经安装但这是我能找到的唯一修复。(仅使用 MySQL ) 【参考方案1】:看源码sqlobject是纯python,代码依赖mysqldb,限制为cpython。
但是,如果您修改代码以使用用纯 python 编写的 mysql.connector (http://dev.mysql.com/doc/connector-python/en/index.html) 库,您应该能够建立与 mysql 的连接
注意:mysql.connector 不遵循与 MySQLdb 相同的 api,并且需要对 source code 进行大量重写
我相信这可能是您最好的解决方法
【讨论】:
【参考方案2】:http://mysql-python.sourceforge.net/FAQ.html
http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/
Getting "Error loading MySQLdb module: No module named MySQLdb" - have tried previously posted solutions
【讨论】:
-1:这个问题专门针对铁蟒。您提供的链接仅与 cpython 相关。【参考方案3】:如果你看到这个,很可能你在安装 MySQLdb 时做错了;重新阅读(或阅读)自述文件。 _mysql 是与 MySQL 客户端库接口的低级 C 模块。
过去各种版本的 MySQLdb 在“奇怪”平台上都存在构建问题;在这种情况下,“奇怪”意味着“不是 Linux”,尽管通常在 Unix/POSIX 平台上没有问题,包括 BSD 和 Mac OS X。Windows 问题更大,部分原因是 Windows 安装中没有可用的 mysql_config MySQL的。 1.2.1 解决了大部分(如果不是全部)这些问题,但您仍然需要编辑配置文件,以便安装程序知道在哪里可以找到 MySQL 以及要包含哪些库。
ImportError: libmysqlclient_r.so.14: cannot open shared object file: No such file or directory
.so 后面的数字可能会有所不同,但这意味着您有一个 MySQLdb 版本针对一个 MySQL 版本编译,现在正尝试针对不同版本运行它。共享库版本往往会在主要版本之间发生变化。
解决方法:重建MySQLdb,或者获取对应版本的MySQL。
可能导致此问题的另一件事:MySQL 库可能不在您的系统路径上。
解决方案:
set the LD_LIBRARY_PATH environment variable so that it includes the path to the MySQL libraries.
set static=True in site.cfg for static linking
reconfigure your system so that the MySQL libraries are on the default loader path. In Linux, you edit /etc/ld.so.conf and run ldconfig. For Solaris, see Linker and Libraries Guide.
ImportError: ld.so.1: python: fatal: libmtmalloc.so.1: DF_1_NOOPEN tagged object may not be dlopen()'ed
这是来自 Solaris 的一个奇怪的问题。这是什么意思?我不知道。但是,如果 Python 和 MySQL 之间存在某种编译器或环境不匹配,则可能会发生这种情况。例如,在某些商业系统上,您可能使用自己的编译器编译了一些代码,而使用 GCC 编译了其他东西。它们并不总是啮合在一起。遇到这种情况的一种方法是从不同供应商处获取二进制包。
解决方案:从源代码重建 Python 或 MySQL(或两者)。
ImportError: dlopen(./_mysql.so, 2): Symbol not found: _sprintf$LDBLStub Referenced from: ./_mysql.so Expected in: dynamic lookup
这是来自 Mac OS X 的一个。似乎是编译器不匹配,但这次是在两个不同版本的 GCC 之间。似乎 GCC 的每个主要版本都在某些方面更改了 ABI,因此链接使用 GCC-3.3 和 GCC-4.0 编译的代码可能会出现问题。
【讨论】:
-1:这个问题是专门针对ironpython的——我在标题和第一句中提到了它。您的回答无助于解决尝试将此模块与 ironpython 一起使用的独特情况【参考方案4】:您必须在 python 中安装“_mysql”模块。我不知道您使用的是哪个版本的python。
这里有一些为 python 2.x 或 python 3.x 安装“_mysql”模块的链接
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe
http://www.codegood.com/archives/129
【讨论】:
这个问题是专门关于铁蟒的,但你的答案似乎是针对cpython的。以上是关于如何在 Iron python 上安装和使用 sqlobject+mysql?的主要内容,如果未能解决你的问题,请参考以下文章
Meteor 或 Iron Router 是不是会干扰锚标记上的 jQuery 事件?
如何使用 Meteor 模板助手编辑 Iron-Router 中作为参数传递的值?