成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

SQLAIchemy數(shù)據(jù)模型關(guān)聯(lián)

honhon / 2989人閱讀

摘要:以下為讀深入理解使用要建立相應(yīng)的數(shù)據(jù)模型而實(shí)際中模型之間又有一些不同的關(guān)系比如一一對(duì)應(yīng),一對(duì)多個(gè),多對(duì)多個(gè)模型之間建立關(guān)系便必不可少了用戶(hù)表示例圖片表示例第一張圖片第二張圖片第三張圖片標(biāo)簽表示例人物風(fēng)景動(dòng)物約束表示例一對(duì)一這種關(guān)聯(lián)似乎很少用

以下為讀《深入理解Flask》

使用SQLAIchemy要建立相應(yīng)的數(shù)據(jù)模型
而實(shí)際中模型之間又有一些不同的關(guān)系

比如一一對(duì)應(yīng),一對(duì)多個(gè),多對(duì)多個(gè)
模型之間建立關(guān)系便必不可少了
用戶(hù)表示例
ID Username Password UserAvator Email
1 bayi 123456 upload/avator1jpg 15157@qq.com
2 babai 123654 upload/avator2.jpg 123456@qq.com
3 xiaoming 654321 upload/avator3.jpg 123654@qq.com
圖片表示例
ID user_id description Arddess
1 1 第一張圖片 upload/1.jpg
2 1 第二張圖片 upload/2.jpg
3 3 第三張圖片 upload/3.jpg
標(biāo)簽表示例
ID tag
1 人物
2 風(fēng)景
3 動(dòng)物
約束表示例
ID 1 ID 2 ID 3
pic_id 1 pic_id 2 pic_id 1
tag_id 1 tag_id 1 tag_id 2
一對(duì)一
這種關(guān)聯(lián)似乎很少用到,夫妻似乎是很好的生活模型
可以在丈夫一方加上外鍵,并加上唯一參數(shù)
class husband(db.Model):
    __tablename__ = "husband"
    id = db.Column(db.Integer, primary_key=True)
    husbandname = db.Column(db.String(80), unique=True)
    wife = db.relationship("wife", backref="husband", lazy="dynamic",unique=True)
在妻子一方加上指向husband的值
class wife(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    wifename = db.Column(db.String(80), unique=True)
    husbandId = db.Column(db.Integer, db.ForeignKey("husband.id"))
一對(duì)多
這個(gè)關(guān)系算是常用的了,這次的demo里也有這個(gè):user->picture
一個(gè)用戶(hù)會(huì)上傳多張圖片,相當(dāng)于把一對(duì)一里的唯一參數(shù)刪去
user.pictures就成了一個(gè)列表
class User(db.Model):
    __tablename__ = "User"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    password= db.Column(db.String(128))
    avator= db.Column(db.String(35), unique=True)
    email = db.Column(db.String(120), unique=True,index=True)
    picture = db.relationship("Picture", backref="user", lazy="dynamic")

class Picture(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    dsepriction= db.Column(db.String(5000), unique=True)
    address= db.Column(db.String(35), unique=True)
    userId = db.Column(db.Integer, db.ForeignKey("User.id"))
多對(duì)多
比如這次用到的圖片->標(biāo)簽
多對(duì)多的建立就需要一個(gè)約束表的存在
#約束表
relation = db.Table("relation",
    db.Column("tags_id", db.Integer, db.ForeignKey("tags.id"),primary_key=True),
    db.Column("picture_id", db.Integer, db.ForeignKey("picture.id"),primary_key=True)
)

class Picture(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    dsepriction= db.Column(db.String(5000), unique=True)
    address= db.Column(db.String(35), unique=True)
    userId = db.Column(db.Integer, db.ForeignKey("User.id"))
    tags = db.relationship(
        "Tags", secondary=relation,backref=db.backref("picture", lazy="dynamic"))

class Tags(db.Model):
    id = db .Column(db.Integer, primary_key=True)
    tag = db.Column(db.String(50))
多對(duì)多關(guān)系一開(kāi)始寫(xiě)就感覺(jué)對(duì)操作方面很迷,就實(shí)際操作了一下
實(shí)際操作一下可以體會(huì)一下他的這種用法
C:UsersayiDesktopirides (master)
(venv) λ python manage.py shell
>>> pic=picture.query.filter_by(id=2).first()
>>> pic

>>> tag1=tags.query.first()
>>> tag1

>>> tag2=tags.query.filter_by(id=2).first()
>>> tag2

>>> pic.tags=[tag1,tag2]
>>> db.session.add(pic)
>>> db.session.commit()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41001.html

相關(guān)文章

  • Laravel核心解讀--Database(四) 模型關(guān)聯(lián)

    摘要:為關(guān)聯(lián)關(guān)系設(shè)置約束子模型的等于父模型的上面設(shè)置的字段的值子類(lèi)實(shí)現(xiàn)這個(gè)抽象方法通過(guò)上面代碼看到創(chuàng)建實(shí)例時(shí)主要是做了一些配置相關(guān)的操作,設(shè)置了子模型父模型兩個(gè)模型的關(guān)聯(lián)字段和關(guān)聯(lián)的約束。不過(guò)當(dāng)查詢(xún)父模型時(shí),可以預(yù)加載關(guān)聯(lián)數(shù)據(jù)。 Database 模型關(guān)聯(lián) 上篇文章我們主要講了Eloquent Model關(guān)于基礎(chǔ)的CRUD方法的實(shí)現(xiàn),Eloquent Model中除了基礎(chǔ)的CRUD外還有一個(gè)...

    gekylin 評(píng)論0 收藏0
  • Laravel Eloquent 模型關(guān)聯(lián)速查表

    摘要:模型資料庫(kù)遷移儲(chǔ)存紀(jì)錄在及之間建立關(guān)聯(lián)在及之間建立關(guān)聯(lián)取得紀(jì)錄取得取得一對(duì)多關(guān)聯(lián)示例細(xì)節(jié)在此示例中,我們有兩個(gè)模型小偷和車(chē),和兩張表和。業(yè)務(wù)規(guī)則小偷可以偷走多輛車(chē)。關(guān)系圖關(guān)聯(lián)詳情關(guān)聯(lián)表應(yīng)該保存駕駛員和汽車(chē)。 showImg(https://segmentfault.com/img/remote/1460000016043938); 一張 Laravel’s Eloquent ORM 5...

    flybywind 評(píng)論0 收藏0
  • Django 博客開(kāi)發(fā)教程 3 - 創(chuàng)建 Django 博客的數(shù)據(jù)庫(kù)模型

    摘要:而對(duì)于標(biāo)簽來(lái)說(shuō),一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用,表明這是多對(duì)多的關(guān)聯(lián)關(guān)系。理解多對(duì)一和多對(duì)多兩種關(guān)聯(lián)關(guān)系我們分別使用了兩種關(guān)聯(lián)數(shù)據(jù)庫(kù)表的形式和。表明一種一對(duì)多的關(guān)聯(lián)關(guān)系。 設(shè)計(jì)博客的數(shù)據(jù)庫(kù)表結(jié)構(gòu) 博客最主要的功能就是展示我們寫(xiě)的文章,它需要從某個(gè)地方獲取博客文章數(shù)據(jù)才能把文章展示出來(lái),通常來(lái)說(shuō)這個(gè)地方就是數(shù)據(jù)庫(kù)。我們把寫(xiě)好的文章永久地保存在數(shù)據(jù)庫(kù)里,...

    Shimmer 評(píng)論0 收藏0
  • 模型高級(jí)特性,引入模型關(guān)聯(lián)關(guān)系

    摘要:創(chuàng)建模型并設(shè)置關(guān)聯(lián)關(guān)聯(lián)關(guān)系設(shè)置模型關(guān)系一個(gè)對(duì)應(yīng)多個(gè),一個(gè)對(duì)應(yīng)多個(gè)。手動(dòng)在中增加關(guān)聯(lián)關(guān)系。并且是實(shí)現(xiàn)了數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系,比如一個(gè)對(duì)應(yīng)多個(gè),如下圖。 文章來(lái)源:模型高級(jí)特性,引入模型關(guān)聯(lián)關(guān)系 接著前面五篇: 環(huán)境搭建以及使用Ember.js創(chuàng)建第一個(gè)靜態(tài)頁(yè)面 引入計(jì)算屬性、action、動(dòng)態(tài)內(nèi)容 模型,保存數(shù)據(jù)到數(shù)據(jù)庫(kù) 發(fā)布項(xiàng)目,加入CRUD功能 從服務(wù)器獲取數(shù)據(jù),引入組件 前言 ...

    raise_yang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<