flask - 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
请有人帮我解决这个问题。
解决方案
引擎 URL 不应该是本地 Postgres 安装的路径,而是告诉 SQLAlchemy 如何连接到数据库的字符串。它具有以下格式:
postgresql://username:password@server:port/databasename
推荐阅读
- scala - 如何提取具有特定值的列名
- reactjs - 尝试更新子组件时使用useEffect时的无限循环
- java - 当参数个数大于 3 时,Java 函数参数转换为 arg1、arg2、arg3
- java - `protoc` 生成无效的 Java
- azure - 如何使用 Windows 安全中心为托管在 AZURE VM 中的 Web 应用程序配置安全警报
- spring-boot - 带有外部调度程序的 Camel Spring Boot
- python - 如何附加到具有特定格式的列表
- .net-core - 身份服务器 4 的授权类型应该用于电子商务应用程序
- oracle - 计算oracle中不同范围的计数
- mongodb - 如何使 UID 字段相对于日期范围是唯一的,以删除 MongoDB 中的重复行