Python Sqlite 更新多个值

Axl*_*Max 5 python database sqlite sql-update

有没有办法在一条指令中完成这两个更新?

cur.execute("UPDATE table_name1 SET email = 'foo@bar.com' WHERE id = 4")
cur.execute("UPDATE table_name1 SET phone = '0400-123-456' WHERE id = 4")
Run Code Online (Sandbox Code Playgroud)

我尝试了各种变体,但无法使其正常工作。

编辑:我想传递电子邮件、电话和我作为参数。

don*_*don 6

你的解决方案让你接受 SQL 注入。如果您阅读了文档的第一部分,它会明确指出不要按照您提议的方式进行操作:

永远不要这样做——不安全!

symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
Run Code Online (Sandbox Code Playgroud)

改为这样做

t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
Run Code Online (Sandbox Code Playgroud)

因此,您应该将代码更改为以下几行:

conn = sqlite3.connect('connex.db')
cur = conn.cursor()
mobileval = '0400-123-456'
emailval = 'foo@bar.com'
constrain = 4

q = "UPDATE licontacts310317 SET (?, ?) 
             WHERE (?)=(?)"

cur.execute(q, (liemailval, limobileval, id, constrain) )

conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)

我还没有测试过,但希望你能明白=)


小智 5

以下工作:在这一点上它只是标准的 SQL。

cur.execute("""UPDATE table_name1
            SET email = 'foo@bar.com', phone = '0400-123-456'
            WHERE id = 4""")
Run Code Online (Sandbox Code Playgroud)