1. 程式人生 > >flask SQLALchemy外鍵及約束

flask SQLALchemy外鍵及約束

== 文章 設定 反向引用 null 關聯 conf rsquo all

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外鍵及約束