一、ORM模型外键与表的关系
1、创建一个用户表,一个文章表,用户和文章是1对多的关系,通过用户查找他的文章
class User(db.Model): #创建User表继承已经封装好的数据库模型 __tablename__ = "user" #表名 #定义字段 id = db.Column(db.Integer, primary_key=True, autoincrement=True) #autoincrement自动增长 # varchar, null=0 username = db.Column(db.String(100), nullable=False) password = db.Column(db.String(100), nullable=False) class Article(db.Model): __tablename__ = "article" id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(200), nullable=False) content = db.Column(db.Text, nullable=False) # 添加作者的外键即用户id author_id = db.Column(db.Integer, db.ForeignKey("user.id")) # backref:会自动的给User模型添加一个articles的属性,用来获取文章列表 author = db.relationship("User", backref="articles") #author是一个关系属性,它表示与"User"模型的一对多关系 with app.app_context(): #上下文管理器来创建数据库表 db.create_all()
2、填充数据(创建一个用户,两篇文章)
@app.route("/user/add") def add_user(): # 1. 创建ORM对象 user = User(username="小陈", password='1001') # 2. 将ORM对象添加到db.session中 db.session.add(user) # 3. 将db.session中的改变同步到数据库中 db.session.commit() return "用户创建成功!" # http://127.0.0.1:5000/user/add@app.route("/article/add") def article_add(): article1 = Article(title="Flask如何连接数据库", content="Flask_database") article1.author = User.query.get(1) article2 = Article(title="Django如何连接数据库", content="Django_database") article2.author = User.query.get(1) # 添加到session中 db.session.add_all([article1, article2]) # 同步session中的数据到数据库中 db.session.commit() return "文章添加成功!" # http://127.0.0.1:5000/article/add
3、查询用户文章
@app.route("/article/query") def query_article(): user = db.session.get(User, 1) for article in user.articles: print(article.title) return "文章查找成功!" # http://127.0.0.1:5000/article/query
二、flask_migrate迁移ORM模型
弃用这个映射方法
with app.app_context(): #上下文管理器来创建数据库表
db.create_all()
使用flask_migrate映射方法,先删除现有的表进行测试
在终端运行 pip install flask_migrate,导入这个包
from flask_migrate import Migrate
#添加代码
db = SQLAlchemy(app)
ORM模型映射成表-项目终端运行三步曲(类似Django)
1.、flask db init:这步只需要执行一次
flask db init
:这个命令用于初始化Flask应用的数据库迁移环境。它会在项目目录下创建一个名为migrations
的文件夹,用于存放数据库迁移脚本。这些脚本可以帮助你管理数据库的结构变化,例如添加或删除表、修改表结构等。
2、flask db migrate:识别ORM模型的改变,生成迁移脚本
flask db migrate
:这个命令用于生成一个新的迁移脚本。当你对数据库模型进行了修改(例如添加了新的字段或表),你需要运行这个命令来创建一个新的迁移脚本,以便将这些更改应用到数据库中。生成的迁移脚本会记录下这次更改的内容。
3、flask db upgrade:运行迁移脚本,同步到数据库中
flask db upgrade
:这个命令用于将迁移脚本应用到数据库中,实际执行数据库结构的变更。当你运行flask db migrate
生成了迁移脚本后,需要运行flask db upgrade
来将这些更改应用到数据库,使数据库保持最新状态。
上一篇文章:Flask(MySQL)——ORM模型与表的映射及增删改查操作-CSDN博客