将 postgresql 与 sqlalchemy 连接起来

Posted

技术标签:

【中文标题】将 postgresql 与 sqlalchemy 连接起来【英文标题】:Connecting postgresql with sqlalchemy 【发布时间】:2012-03-10 08:41:40 【问题描述】:

我知道这可能是一个非常简单的问题,但我不知道解决方案。当我尝试连接到 postgresql 时,这里发生了什么?我是数据库和编程领域的自学者,所以请对我温柔一点。 当我尝试以下代码时:

import sqlalchemy
db = sqlalchemy.create_engine('postgresql:///tutorial.db')

我收到此错误:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 db = sqlalchemy.create_engine('postgresql:///tutorial.db') 文件“C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\engine__init__.py”,第 327 行,在 create_engine 返回 strategy.create(*args, **kwargs) 文件“C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\engine\strategies.py”,第 64 行,在创建 dbapi = dialect_cls.dbapi(**dbapi_args) 文件“C:\Python27\lib\site-packages\sqlalchemy-0.7.5dev-py2.7.egg\sqlalchemy\dialects\postgresql\psycopg2.py”,第 289 行,在 dbapi psycopg = 导入('psycopg2') ImportError:没有名为 psycopg2 的模块

我需要单独安装 psycopg2 吗? postgresql 的正确连接字符串是什么?

【问题讨论】:

【参考方案1】:

您需要pip install SQLAlchemypip install psycopg2。 使用 psycopg2 的 SQLAlchemy 连接字符串示例:

from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name')

您也可以仅使用 psycopg2 驱动程序连接到您的数据库:

import psycopg2
conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"
conn = psycopg2.connect(conn_string)

但是,使用 psycopg2 驱动程序进行连接并没有利用 SQLAlchemy。

【讨论】:

我还有一个关于postgresql+psycopg2://user:password@...的问题,为什么有人文章说只用postgresql://user:password@...,有什么区别? 根据这条评论是一样的:***.com/a/47946916/7775043 @TonyChou 见docs.sqlalchemy.org/en/14/core/engines.html:“PostgreSQL 方言使用 psycopg2 作为默认 DBAPI”,所以没有区别。 " DBAPI 是一个'低级' API,它通常是 Python 应用程序中用于与数据库对话的最低级系统。"【参考方案2】:

是的,psycopg2 基本上是 PostgreSQL 的 Python 驱动程序,需要单独安装。

可以在此处找到有效连接字符串的列表,您的有点偏离(您需要以下链接中指定的用户名、密码和主机名):

http://docs.sqlalchemy.org/en/latest/core/engines.html#postgresql

【讨论】:

我真的很困惑,这不是 SQLAlchemy 的依赖项。如果你打算用你的包来包装另一个包的功能,你应该支持它而不需要单独安装。 @StevenWade 不是真的,当您可能只使用一个数据库系统时,您通常不想为 all 数据库系统安装依赖项。这就是为什么这种包中的依赖是可选的,而不是强制的。【参考方案3】:

是的,您需要单独安装 psycopg2,如果您使用的是 linux,您只需在终端输入以下行:$pip install psycopg2 如果这不起作用,请尝试使用 sudo:$sudo pip install psycopg2

【讨论】:

以上是关于将 postgresql 与 sqlalchemy 连接起来的主要内容,如果未能解决你的问题,请参考以下文章

使用 sqlalchemy 从 PostgreSQL 查询返回 Pandas 数据框

使用 PostgreSQL 在 SQLAlchemy 中输入 ENUM

使用 idx 自动增量将数据帧插入到 postgresql sqlalchemy

SQLAlchemy/psycopg2 到 PostgreSQL 数据库的连接是不是加密

通过 SQLAlchemy 到 PostgreSQL HSTORE 的 Python 列表

使用 SQLAlchemy 进行 PostgreSQL ILIKE 查询