Flask Python Web 框架(四)
阿新 • • 發佈:2018-11-25
Flask Web框架中模型的相關與對映
一、關係對映
1、一對多 語法: 1、在“多”的實體中 增加一個列,引用自“一” 表的主鍵列 外來鍵列名 = db.Column(db.Integer,db.ForeignKey('主鍵表,主鍵列')) 2、在“一”的實體中 增加關聯屬性以及反向引用關係 ex: 關聯屬性 在course物件中,通過一個屬效能夠得到對應的所有的teacher們 關聯屬性,是應該加在Course的實體類中 反向引用: 在student物件中,通過一個屬效能夠得到對應的course 反向引用關係屬性,是應該加在Teacher的實體類中 增加關聯屬性和反向引用關係: 屬性名 = db.relationship('多表實體類名',關係選項) 關係選項: 選項名 說明 backref 在關係的另一個模型中新增的反向引用屬性名 lazy 指定如何載入當前的相關記錄 select:首次訪問時載入記錄 immediate:源物件載入後馬上載入相關記錄 subquery:效果同上,利用子查詢方式載入記錄 noload:永不載入記錄 dynamic:預設不載入記錄,但會提供載入記錄的查詢 uselist 如果設定為False,表示不使用列表表示關聯資料,而使 用標量 secondary 指定多對多關係對映中的關聯表的名字 2、一對一 1、什麼是一對一? A表中的一條記錄只能與B表中的一條記錄相關聯 B表中 的一條記錄只能與A表中的一條記錄相關聯 2、在SQLAlchemy中的體現 1、在任意一個類中增加 外來鍵列名 = db.Column(db.Integer,db.ForeignKey('主鍵表,主鍵列')) 2、在另外一個類中增加 關聯屬性 和 反向關係屬性 屬性 = db.relationship('關聯的實體類',backref = '反向引用屬性名',uselist= False) 3 、多對多: 1、什麼是多對多? A表中的一條資料可以與B表中任意多條資料相關聯 B表中的一條資料可以與A表中任意多條資料相關聯 2、實現 在資料庫中使用第三張表(關聯表) 在程式語言中可以不編寫對應的實體類 建立第三張表 db.Table( 'student_course',#在資料庫中表名 db.Column('id',db.Integer,primary_key=True), db.Column('student_id',db.Integer,db.ForeignKey('student.id')), db.Column('course_id',db.Integer,db.ForeignKey('course.id')), )
二、cookies/cookie
1、什麼是cookies? cookies是一種資料儲存手段 將一段文字儲存在客戶端(瀏覽器)的一種手段,並且可以長時間儲存 2、cookies的使用場合 1、記住密碼 2、記住搜尋關鍵詞 3、在Flask中使用cookies 1、使用響應物件將資料儲存進cookies(客戶端) 1、resp = make_response("字串"|render_template()) 2、resp = redirect('地址') cookies的語法: 響應物件.set_cookie(key,value,max_age) key:儲存的cookie的名稱 value:儲存的cookie的值 max_age:儲存的時間,取值為數字,預設以s為的單位 2、獲取cookie的值 每次向伺服器傳送請求時,都會把cookie中的資料封裝到request中並帶到伺服器上 在flask中通過request.cookies獲取所有的cookies的值 3、刪除cookie的值 響應物件.delete_cookie('key')
三、session - 會話
1、什麼是會話? session是儲存在伺服器上,為每個瀏覽器所開闢的一段空間 2、session在Flask中的實現 1、配置SECRET_KEY app.config['SECRET_KEY']="xxxxxxxxx" **值隨意寫,越複雜越好 2、使用session from flask import session 1、向session中儲存資料 session['key'] = value 2、取值 value = session['key'] value = session.get('key',' ') 3、從session中刪除資料 del session['key']