近期一直在學flask框架,后悔當初沒有好好學習數據庫。一個外鍵的知識,真的是太。。。。藍瘦香菇
創建數據庫
class Users(db.Model): __tablename__ = 'users' id = db.Column(db.Integer ,primary_key=True ,nullable=False ,autoincrement=True) username = db.Column(db.String(100) ,unique=True ,nullable=False) class Archile(db.Model): __tablename__ = 'archile' id = db.Column(db.Integer,primary_key=True ,autoincrement=True) title = db.Column(db.String(100) , unique=True ) content = db.Column(db.String(100) , unique=True, nullable=False) author_id = db.Column(db.Integer ,db.ForeignKey('users.id')) author = db.relationship('Users' , backref=db.backref('archiles')) # 必須指明是大寫的relationship()必須指明是大寫的Users db.create_all()
必須要有db.create_all()這個操作,才能夠創建數據庫,並且數據庫中創建之后在代碼里面修改是沒有用的,要先刪除,這樣后來的代碼才會進行執行。其實后面用到migrate這個庫就可以是動態的實現數據的更新和刪除了。
主鍵在一個數據表中只能有一個
外鍵在一個數據表中可以有多個,數據表通過外鍵可以連接到另一個數據表,但是前提是要存在另外一張數據表。
補一個有主鍵和外鍵的模型
class Question(db.Model): __tablename__ = 'question' id = db.Column(db.Integer , primary_key=True ,nullable=False , unique=True ,autoincrement=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text,nullable=False) author_id = db.Column(db.Integer ,db.ForeignKey('user.id')) create_time = db.Column(db.DateTime, default=datetime.now) # now方法是服務器第一次運行的時間 author = db.relationship('User' ,backref = db.backref('questios'))
這個模型中定義了authord_id為外鍵,通過author_id這個外鍵,我們能把question這個表連接到user表中。這樣我們用user表中數據的時候就可以用author進行查詢了。
我想查一個title==1的作者。
我就先查到title為1的數據表
question1 = Question.query.filter(Question.title==1).first()
那么我們再進行連接到user表中的時候
author1 = question.author
連接之后再進行查詢
for i in author1 :
print(i.user)
這樣就可以進行連接了。
-----------------------------------------菜雞一枚,歡迎大佬指點留言-------------------------------------------------------------------
