0

我有一个名为 list.py 的 Python 代码,用于与名为 data_sample 的本地 postgresql 数据库交互。这是我的代码:

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

engine = create_engine(os.getenv("data_sample"))
db = scoped_session(sessionmaker(bind=engine))

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

if __name__ == "__main__":
    main()

当我将代码作为 python list.py 执行时,出现以下错误:

Traceback (most recent call last):
  File "list.py", line 6, in <module>
    engine = create_engine(os.getenv("data_sample"))
  File "/Users/admin/.pyenv/versions/3.7.3/lib/python3.7/site-packages  /sqlalchemy/engine/__init__.py", line 500, in create_engine
    return strategy.create(*args, **kwargs)
  File "/Users/admin/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)
AttributeError: 'NoneType' object has no attribute '_instantiate_plugins'

似乎它不知道我的名为 data_sample 的数据库。我该如何解决?

4

1 回答 1

0

参考这个链接

os.getenv 用于获取环境变量的值

改用这个:

engine = create_engine("postgresql://username:password@localhost:port/name_of_database")

如果您没有更改默认设置,那么您的用户名将是 postgres,端口将是 5432。

于 2020-07-07T10:48:44.160 回答