我正在研究 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行,在 引擎= 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”, _parse_rfc1738_args中的第270行 “无法解析来自字符串'%s'的rfc1738 URL”%名称)sqlalchemy.exc.ArgumentError:无法解析来自字符串的rfc1738 URL 'C:\ Program Files \ PostgreSQL \ 10 \ data'
请有人帮我解决这个问题。
答案 0 :(得分:2)
引擎URL不应是本地Postgres安装的路径,而应是一个告诉SQLAlchemy如何连接数据库的字符串。它具有以下格式:
<form [formGroup]="form" (ngSubmit)="submit()">
<label formArrayName="mobile" *ngFor="let order of form.controls.mobile.contols; let i = index">
<input type="text" [formControlName]="i">
{{mobile[i] }}
</label>
</form>
答案 1 :(得分:0)
我现在也在看CS50的课程视频。您应该尝试只使用create_engine("your_database_url")
。
如果您仍然想使用create_engine(os.getenv("DATABASE_URL"))
tp进程,请确保可以使用像psql $DATABASE_URL
这样的命令行登录。
答案 2 :(得分:0)
使用psql $DATABASE_URL
对我有用,但我在create_engine("your_database_url")
上仍然遇到相同的错误
(project1) C:\Users\Gregory Goufan\Downloads\CS50s Web Programming with Python and JavaScript\project1\project1\project1>psql postgresql://openpg:openpgpwd@localhost:5432/postgres
psql (9.5.8)
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=#
但是,确实可以通过将URL直接放入create_engine函数中来实现奇怪的事情,因为它确实是返回的字符串
sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string ' 'postgresql://openpg:openpgpwd@localhost:5432/postgres''