Django使用聯合主鍵

2022-06-22 07:15:16 字數 2256 閱讀 3318

今天閒著沒事,突然想起乙個以前遇到的乙個小問題。一直忘了來驗證自己的解決方案,所以今天特意來查詢了些資料來驗證下自己的想法。整理如下:

單張表內建立聯合主鍵:

class

iottemp(models.model):

mac = models.charfield(max_length=64, blank=false)

temperature = models.floatfield(default=0.0)

seq_no = models.integerfield(blank=false, null=false)

time = models.datetimefield(auto_now=false)

order_id = models.charfield(max_length=32, blank=true, null=true, verbose_name=u'

訂單id')

user = models.charfield(max_length=text_len, blank=true, verbose_name=u'

所屬人'

)

#seq_no,order_id,mac作為聯合主鍵保證資料不重複

class

meta:

iot'

unique_together = (("

seq_no

", "

order_id

", "

mac"

),) verbose_name_plural = u"

通用溫度表

"

關聯表內建立聯合主鍵:

class

user(model):

id=autofield(primary_key=true)

name = charfield(max_length=30)

age =integerfield()

class

role(model):

id=autofield(primary_key=true)

name=charfield(max_length=10)

#這是兩個model有乙個roleuser的model來描述use與role的關係,需要user的id與role的id做外來鍵,也做聯合主鍵,如下:

class

roleuser(model):

userid=foreignkey(user)

roleid=foreignkey(role)

class

meta:

unique_together=("

userid

","roleid

")

當使用django的orm來建立資料時,如果建立的資料已經存在,django會對這個執行語句報錯。

如果有一批資料要建立,不存在的直接建立存在的進行更新(類似於mysql的duplicatekeyupdate)或者不進行任何操作(類似於mysql的ignore),那該如何來做麼?

#

存在則放棄

try:

temp = iottemp.object.create(order_id=1,seq_no=1,mac="

wode111

",temperature=22.22,time="

2018-08-08 11:11:11

",user="

admin")

except

exception as e:

pass

#相當於ignore

#存在則更新

try:

temp = iottemp.object.create(order_id=1,seq_no=1,mac="

wode111

",temperature=22.22,time="

2018-08-08 11:11:11

",user="

admin")

except

exception as e:

temp = iottemp.object.filter(order_id=1,seq_no=1,mac="

wode111

").update(temperature=33.33,time="

2019-09-09 22:22:22

",user="

admin

")

Django如何建立聯合主鍵

1 資料庫中的每張表只能有乙個主鍵,不可能有多個主鍵 2 所謂乙個表多個主鍵,我們稱之為聯合主鍵 3 主鍵的作用是保證資料的唯一性和完整性,同時通過主鍵檢索表增加檢索速度 class iottemp models.model seq no models.integerfield blank fals...

MySQL聯合主鍵儲存 mysql聯合主鍵

聯合主鍵就是多個表的主鍵聯合起來作為乙個表的主鍵 這個是摘抄的別人的 create table products description products id int 11 not null,language id int 11 not null default 1 products name v...

聯合主鍵SQL 聯合索引

聯合主鍵索引 聯合索引 alter table dbo tb shop add constraint shopno unique nonclustered shopgid asc prodgid asc skugid asc with pad index off,statistics norecom...