【问题标题】:Connecting postgresql with sqlalchemy将 postgresql 与 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 的正确连接字符串是什么?

【问题讨论】:

    标签: python database postgresql orm sqlalchemy


    【解决方案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@...,有什么区别?
    • 根据这条评论是一样的:stackoverflow.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-10
      • 2014-12-05
      • 2020-04-02
      • 2012-10-19
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多