Таблица 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)
Python
def 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)
, это работает, но при обновлении (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)