创建引擎对象以连接PostgreSQL数据库时出现python sqlalchemy错误?

时间:2020-03-22 09:56:17

标签: python postgresql sqlalchemy

我在python中使用sqlalchemy连接到PostgreSQL数据库中的数据库,但出现错误。谁能帮我。

这是运行文件后的命令行输出。

C:\Users\naeem\Desktop>python sql.py

Traceback (most recent call last):

  File "sql.py", line 5, in <module>
    engine = create_engine("postgressql://postgres:postgres@localhost:5432/flights")
  File "<string>", line 2, in create_engine

  File "C:\Program Files\Python37\lib\site-packages\sqlalchemy-1.4.0b1.dev0-py3.7-win-amd64.egg\sqlalchemy\util\deprecations.py", line 171, in warned
    return fn(*args, **kwargs)

  File "C:\Program Files\Python37\lib\site-packages\sqlalchemy-1.4.0b1.dev0-py3.7-win-amd64.egg\sqlalchemy\engine\create.py", line 437, in create_engine
    entrypoint = u._get_entrypoint()

  File "C:\Program Files\Python37\lib\site-packages\sqlalchemy-1.4.0b1.dev0-py3.7-win-amd64.egg\sqlalchemy\engine\url.py", line 172, in _get_entrypoint
    cls = registry.load(name)

  File "C:\Program Files\Python37\lib\site-packages\sqlalchemy-1.4.0b1.dev0-py3.7-win-amd64.egg\sqlalchemy\util\langhelpers.py", line 278, in load
    "Can't load plugin: %s:%s" % (self.group, name)

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgressql

这是我的sql.py python代码

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine("postgressql://postgres:postgres@localhost:5432/flights")

db = scoped_session(sessionmaker(bind=engine))
flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
for flight in flights:
    print(f"{flight.origin} to {flight.destination}, {flight.duration} minutes.")

2 个答案:

答案 0 :(得分:1)

我认为您在“ create_engine”函数中拼写了postgres 您输入2个字符而不是1个

示例:

from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine("postgresql://postgres:postgres@localhost:5432/flights")

db = scoped_session(sessionmaker(bind=engine))
flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
for flight in flights:
   print(f"{flight.origin} to {flight.destination}, {flight.duration} minutes.")```

答案 1 :(得分:0)

我认为您应该将方言指定为 postgres://而非postgressql:// 像这样:

engine = create_engine("postgres:// ...

这就是sqlalchemy通知您的原因,因为没有名为postgressql的模块。