flask SQLALchemy外鍵及約束
阿新 • • 發佈:2018-02-22
== 文章 設定 反向引用 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外鍵及約束