亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python sqlite3條件查詢

python sqlite3條件查詢

米琪卡哇伊 2022-07-26 16:33:11
Sqlite3 表CREATE TABLE t (    id INTEGER PRIMARY KEY,    p1 INTEGER NOT NULL,    p2 INTEGER NOT NULL,    p3 INTEGER NOT NULL)INSERT INTO t (1, 11, 12, 13)Pythondef update(id, p1=None, p2=None, p3=None):    db = self.get_db()    db.execute('UPDATE t SET p1=?, p2=?, p3=? WHERE id=?', (p1, p2, p3, id))當我使用update(1, 3, 4, 5)它時它可以工作,但是在 update(1, 3, 4) 上它給了我Error: NOT NULL constraint failed: t.p3什么是正常的,因為我應該這樣做if not p3:    db.execute('UPDATE t SET p1=?, p2=? WHERE id=?', (p1, p2, id))是否可以很簡單地完成它?例如:stm = db.prep('UPDATE t SET')if p1:    stm.append('p1=?', p1)if p2:    stm.append('p2=?', p2)if p3:    stm.append('p3=?', p3)stm.append('WHERE id=?', id)
查看完整描述

1 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

這將是我能想到的最簡單的方法:


def update(self, object_id, p1=None, p2=None, p3=None):  # don't use id as a variable name

    db = self.get_db()

    # if any of the parameters are None, set the new value to what it was already

    db.execute('UPDATE t SET p1=ifnull(?, p1), p2=ifnull(?, p2), p3=ifnull(?, p3) WHERE id=?', (p1, p2, p3, object_id))

就個人而言,出于安全原因,我會使用 ORM 而不是原始 SQL。


查看完整回答
反對 回復 2022-07-26
  • 1 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號