将 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 SQLAlchemy
和pip 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 数据库的连接是不是加密