7

是否可以使用sqlobject从 Iron python 连接到 mysql 数据库?如果是这样,怎么做?我必须安装什么?

我为 cpython 安装了 sqlobject,它工作正常,但是如果我在 ironpython 中使用相同的包,我会得到“ImportError:没有名为 _mysql 的模块”。我理解这意味着 Ironpython 无法加载访问 mysql API 所需的基于 C 的 .dll。解决方法是什么,或者有什么解决方法?

4

4 回答 4

1

查看源代码sqlobject是纯python,代码依赖于仅限cpython的MySQLdb。

但是,如果您修改代码以使用用纯 python 编写的 mysql.connector ( http://dev.mysql.com/doc/connector-python/en/index.html ) 库,您应该能够建立与mysql

注意:mysql.connector 不遵循与 MySQLdb 相同的 api,并且需要对源代码进行大量重写

我相信这可能是您最好的解决方法

于 2013-05-23T22:14:36.797 回答
-1

您必须在 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

于 2012-12-24T04:52:55.993 回答
-1

如果你看到这个,很可能你在安装 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 编译的代码可能会出现问题。

于 2012-12-30T00:06:04.377 回答