首页 > 解决方案 > sqlalchemy 显示与 os.getenv() 相关的错误

问题描述

我正在研究sqlalchemy,它引擎中有命令 - create_engine(os.getenv("DATABASE_URL"))

当我运行该程序时,它显示一条错误消息 -

“无法从字符串 'C:\Program Files\PostgreSQL\10\data 解析 rfc1738 URL”

代码

import os

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

#engine = create_engine('sqlite://')
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

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

if __name__ == "__main__":
  main()

错误

回溯(最近一次调用):文件“list.py”,第 7 行,在 engine = create_engine(os.getenv("DATABASE_URL")) 文件“C:\Users\Amber Bhanarkar\AppData\Local\Programs\Python\ Python36\lib\site-packages\sqlalchemy\engine__init__.py”,第 424 行,在 create_engine 返回 strategy.create(*args, **kwargs) 文件“C:\Users\Amber Bhanarkar\AppData\Local\Programs\Python\ Python36\lib\site-packages\sqlalchemy\engine\strategies.py”,第 50 行,在创建 u = url.make_url(name_or_url) 文件“C:\Users\Amber Bhanarkar\AppData\Local\Programs\Python\Python36\ lib\site-packages\sqlalchemy\engine\url.py”,第 211 行,在 make_url 返回 _parse_rfc1738_args(name_or_url) 文件“C:\Users\Amber Bhanarkar\AppData\Local\Programs\Python\Python36\lib\site-packages \sqlalchemy\engine\url。py”,第 270 行,在 _parse_rfc1738_args “无法从字符串 '%s' 解析 rfc1738 URL”% 名称)sqlalchemy.exc.ArgumentError:无法从字符串 'C:\Program Files\PostgreSQL\10\data' 解析 rfc1738 URL

请有人帮我解决这个问题。

标签: flasksqlalchemy

解决方案


引擎 URL 不应该是本地 Postgres 安装的路径,而是告诉 SQLAlchemy 如何连接到数据库的字符串。它具有以下格式:

postgresql://username:password@server:port/databasename

推荐阅读