使用sqlalchemy连接postgresql

Jac*_*des 48 python database postgresql orm sqlalchemy

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

import sqlalchemy
db = sqlalchemy.create_engine('postgresql:///tutorial.db')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

回溯(最近一次调用最后一次):文件"",第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行,在create 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 = import('psycopg2')ImportError:没有名为psycopg2的模块

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

Uku*_*kit 46

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

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

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

  • 老实说,我很困惑这不是 SQLAlchemy 的依赖项。如果您要将另一个软件包的功能与您的软件包一起包装,您应该支持它并且不需要单独安装。 (2认同)
  • @StevenWade并不是真的,当您可能只使用一个数据库系统时,通常不需要为所有数据库系统安装依赖项。这就是为什么此类软件包中的依赖项是可选的,而不是强制性的。 (2认同)

and*_*rew 37

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

from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name')
Run Code Online (Sandbox Code Playgroud)

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

import psycopg2
conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"
conn = psycopg2.connect(conn_string)
Run Code Online (Sandbox Code Playgroud)

但是,使用psycopg2驱动程序进行连接不会利用SQLAlchemy.

  • 我还有一个关于“postgresql+psycopg2://user:password@...”的问题,为什么有人文章说只使用“postgresql://user:password@...”,有什么区别? (3认同)
  • @TonyChou参见https://docs.sqlalchemy.org/en/14/core/engines.html:“PostgreSQL方言使用psycopg2作为默认DBAPI”,所以没有区别。“DBAPI 是一个‘低级’API,通常是 Python 应用程序中用于与数据库通信的最低级系统。” (2认同)