You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用db.create_all()创建PostgreSQL数据库失败,请求技术排查

解决PostgreSQL数据库未创建导致的OperationalError问题

看起来你踩了PostgreSQL和SQLite之间的一个常见坑!我来帮你一步步解决这个问题:

问题根源

你遇到的sqlalchemy.exc.OperationalError本质原因是:SQLAlchemy可以自动创建SQLite的.db文件,但PostgreSQL不会自动帮你创建数据库实例。你的连接字符串里指定的new_test3.db是PostgreSQL的数据库名称,这个数据库在你的PostgreSQL服务器上还不存在,所以才会报错"database does not exist"。

解决方案

1. 手动创建PostgreSQL数据库

PostgreSQL要求先创建数据库实例,才能让SQLAlchemy连接并创建表。你可以用两种方式操作:

  • 命令行方式(psql)
    打开终端,先登录到PostgreSQL服务器:

    psql -U shammun
    

    输入你设置的密码my_password,然后执行创建数据库的SQL命令:

    CREATE DATABASE new_test3;
    

    (小贴士:PostgreSQL的数据库名不需要.db后缀,当然你坚持用new_test3.db也可以,但这不是PostgreSQL的常规命名方式)

  • 图形界面方式(pgAdmin)
    打开pgAdmin,连接到你的PostgreSQL服务器,右键点击「Databases」,选择「Create > Database」,输入数据库名new_test3即可。

2. 调整连接字符串(可选但推荐)

把create.py里的数据库连接字符串改成更符合PostgreSQL习惯的写法(去掉.db后缀):

app.config["SQLALCHEMY_DATABASE_URI"] = 'postgresql://shammun:my_password@localhost:5432/new_test3'

3. 重新运行create.py

现在数据库已经存在,再运行你的create.py,SQLAlchemy就能正常执行db.create_all(),创建flightspassengers两张表了。

额外小提醒

你的代码里注释掉db = SQLAlchemy()是正确的,因为你已经从models.py导入了全局的db对象,不需要重复初始化,这部分不用改动~

内容的提问来源于stack exchange,提问作者shammun

火山引擎 最新活动