flask SQLALchemy外键及约束

Posted FRESHMANS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask SQLALchemy外键及约束相关的知识,希望对你有一定的参考价值。

from flask import Flask,session
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__  = user
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = 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(100),nullable=False)   #zhiding 100 zifu
    content = db.Column(db.Text,nullable=False)
    # 这里要与相关联的表的类型一直, user.id 表示关联到user表下的id字段
    author_id = db.Column(db.Integer,db.ForeignKey(user.id))
   
   #给这个article模型添加一个author属性(关系表),backref为定义反向引用,可以通过‘User.article’这个模型(表)访问这个表的所有内容 author
= db.relationship(User,backref=db.backref(articles)) db.create_all() @app.route(/) def index():
  #添加数据
user1 = User(username="test_flask2") db.session.add(user1) article = Article(title=‘eeee‘,content=‘cfffff‘,author_id=1)      #注意,这里的author_id必须存在,即user表下的id字段的内容必须存在 db.session.add(article) db.session.commit()

   #查询数据---常规方法 article = Article.query.filter(Article.title=="eeee").first() author_id = article.author_id user = User.query.filter(User.id==author_id)      #获取user表的所有数据 print (user.username)    #获取User表下的username字段的内容
#通过sqlalchemy实现查询数据
   article = Article.query.filter(Article.title=="eeee").first()
   print (article.author.username)  #打印name字段的内容,

user = User.query.filter(User.username=="test_flask3").first()
   print (user.articles)        #查询所有的文章,这里需要注意的是这里的articles要与 article表下author字段里的backref设定的articles 字符串相同
return Hello World! if __name__ == __main__: app.run(host=192.168.132.130,debug=True)

 

以上是关于flask SQLALchemy外键及约束的主要内容,如果未能解决你的问题,请参考以下文章

Flask中的(pymysql.err.IntegrityError)(1451,'无法删除或更新父行:外键约束失败...')

JavaLearn#(17)MySQL基础知识DML及DDL语句外键及非外键约束外键策略DQL语句(单表多表)连接查询子查询索引事务视图存储过程用户权限及角色管理

JavaLearn#(17)MySQL基础知识DML及DDL语句外键及非外键约束外键策略DQL语句(单表多表)连接查询子查询索引事务视图存储过程用户权限及角色管理

Flask 学习-83.Flask-SQLAlchemy 联合唯一约束

Flask 学习-83.Flask-SQLAlchemy 联合唯一约束

SQLAlchemy - 不要对关系强制外键约束