【Python相关文档】Postgresql数据库接口 - psycopg2,aiopy

【Python相关文档】Postgresql数据库接口 - psycopg2,aiopy,第1张

概述Psycopg2 Psycopg 是Python语言的PostgreSQL数据库接口。 它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持。它适用于随时创建、销毁大量游标的、和产生大量并发INSERT、UPDATE *** 作的多线程数据库应用。Psycopg包内含 ZPsycopgDA,一个Zope数据库接口。 源代码安装 参考资料: http://initd.org/ps Psycopg2

Psycopg 是Python语言的Postgresql数据库接口。 它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持。它适用于随时创建、销毁大量游标的、和产生大量并发INSERT、UPDATE *** 作的多线程数据库应用。Psycopg包内含 ZPsycopgDA,一个Zope数据库接口。

源代码安装

参考资料:

http://initd.org/psycopg/docs/install.HTML

下载二进制源码包:

https://pypi.python.org/pypi/psycopg2/


进入python虚拟环境(可选,如果需要的话)

进入源代码解压后的文件夹

如果pg_config命令不在PATH环境变量中(如果已安装Postgresql,在对应的文件夹中可找到这个命令),修改setup.cfg文件,设置pg_config变量,手动指定pg_config命令的路径(也可以在build参数中指定)

# "pg_config" is required to locate Postgresql headers and librarIEs needed to# build psycopg2. If pg_config is not in the path or is installed under a# different name uncomment the following option and set it to the pg_config# full path.pg_config=/library/Postgresql/9.4/bin/pg_config


运行build命令:

$python setup.py build


运行install命令

$sudo python setup.py install


安装成功后,在对应python环境中的lib/site-packages文件中就会找到安装好的psycopg2文件夹


aiopg

aiopg是一个用于从asyncio (PEP-3156/tulip) 框架访问 Postgresql 数据库的Python 开发库。它是Psycopg数据库驱动程序异步功能的封装。

参考资料:

http://aiopg.readthedocs.org/en/stable/

安装

aiopg依赖于psycopg2,需要首先安装psycopg2。

可以直接在对应的python环境中使用pip命令安装:

pip3 install aiopg


使用/遇见的问题

Macos中使用时,可能会在运行时出现如下错误信息:

importError: dlopen(/Users/Craig/pyenv/mysite/lib/python2.7/site-packages/psycopg2/_psycopg.so,2): library not loaded: @executable_path/../lib/libssl.1.0.0.dylib  Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib  Reason: image not foundimportError: dlopen(/library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so library libssl.1.0.0.dylib library libcrypto.1.0.0.dylibimportError: dlopen(/library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so,2): Symbol not found: _lo_lseek64 Referenced from: /library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Expected in: /usr/lib/libpq.5.dylib in /library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so

这是由于在 /usr/lib文件夹中找不到对应的mac os动态链接库(或者版本过旧)。

如果已经安装了 postgres, 则在对应的安装文件夹中可以找到这个文件,可以通过如下的方式创建link来解决:


localhost:psycopg2-2.6.1 wongrobin$ sudo ln -s /library/Postgresql/9.4/lib/libssl.1.0.0.dylib /usr/liblocalhost:psycopg2-2.6.1 wongrobin$ sudo ln -s /library/Postgresql/9.4/lib/libcrypto.1.0.0.dylib /usr/liblocalhost:psycopg2-2.6.1 wongrobin$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old localhost:psycopg2-2.6.1 wongrobin$ sudo ln -s /library/Postgresql/9.4/lib/libpq.5.dylib /usr/lib

参考:

http://stackoverflow.com/questions/16407995/psycopg2-image-not-found

http://stackoverflow.com/questions/28515972/problems-using-psycopg2-on-mac-os-yosemite


示例
__author__ = 'wongrobin'import asyncioimport loggingfrom aiopg.pool import create_poollogging.basicConfig(level=logging.INFO)dsn = 'dbname=gof user=gof password=gof host=localhost port=5432'@asyncio.coroutinedef test():    pool = yIEld from create_pool(dsn)    with (yIEld from pool) as conn:        cur = yIEld from conn.cursor()        yIEld from cur.execute('SELECT 1')        ret = yIEld from cur.fetchone()        assert ret == (1,),ret        logging.info(ret)loop = asyncio.get_event_loop()loop.run_until_complete(test())loop.close()
总结

以上是内存溢出为你收集整理的【Python相关文档】Postgresql数据库接口 - psycopg2,aiopy全部内容,希望文章能够帮你解决【Python相关文档】Postgresql数据库接口 - psycopg2,aiopy所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1175527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存