flask對數據庫的外鍵 主鍵


近期一直在學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)

這樣就可以進行連接了。

 

-----------------------------------------菜雞一枚,歡迎大佬指點留言-------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM