flask创建一个database.py,里面只用来创建db,models文件夹下的post.py导入db,app里创建数据库表

也算是一个避免循环导入的例子吧.

来源:文心一言,但是我稍有修改.

在 Flask 项目中,你可以通过以下步骤来组织代码,以便在 database.py 文件中创建数据库连接,并在 models/post.py 文件中定义模型,然后在 Flask 应用中创建数据库表。

项目结构
假设你的项目结构如下:

my_flask_app/
│
├── app.py
├── database.py
├── models/
│ └── post.py
└── ...

1. 创建 database.py
在 database.py 文件中,我们将创建一个 SQLAlchemy 数据库实例。
# database.py

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

2. 创建 models/post.py
在 models/post.py 文件中,我们将导入 database.py 中的 db 实例,并定义一个 Post 模型。
# models/post.py

from database import db
from datetime import datetime

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

def __repr__(self):
    return f"Post('{self.title}', '{self.date_posted}')"

3. 在 app.py 中配置 Flask 应用和数据库
在 app.py 文件中,我们将配置 Flask 应用,创建数据库连接,并应用迁移来创建数据库表。
# app.py

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 
from database import db 
from models.post import Post 
app = Flask(__name__)

# 配置数据库 URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # 你可以使用其他数据库,比如 MySQL, PostgreSQL 等
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化数据库实例
db.init_app(app)

@app.route('/')
def home():
    posts = Post.query.all()
    return f"Home Page<br>{[post.title for post in posts]}"

if __name__ == '__main__':
    # 创建所有表
    with app.app_context():
        db.create_all()

    # 运行 Flask 应用
    app.run(debug=True)

cmd命令提示符里运行以下命令:

python app.py

现在,你的 Flask 应用应该能够启动,并且会在 site.db 中创建 post 表。访问 http://127.0.0.1:5000/ 将显示主页,尽管目前还没有任何帖子。

这样,你就成功地创建了一个 Flask 项目,其中包含数据库连接、模型定义和数据库表创建逻辑。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注