[英]python sqlite3 UPDATE set from variables
我做了下一个查询来更新我的数据库中的一行。
def saveData(title, LL, LR, RL, RR, distanceBack):
c.execute("UPDATE settings SET (?,?,?,?,?,?) WHERE name=?",(title, LL, LR, RL, RR, distanceBack, title))
conn.commit()
我总是收到下一个错误: sqlite3.OperationalError: near "(": syntax error 我知道问号有什么不正确。我找不到确切的解决方案。有人能解释一下问题是什么吗?
您可以使用以下 SQL 语法:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
例如,如果您有一个名为 Category 的表,并且您想编辑类别名称,则可以使用:
c.execute("UPDATE CATEGORY SET NAME=? WHERE ID=?", (name,category_id))
在哪里:
类别是一个只包含两个项目的表:(ID, NAME) 和 ID PRIMARY KEY。
回答您的问题(如果其他人想知道)
有人可以解释我是什么问题吗?
我相信这很可能与您的 python 安装使用的 SQLite 版本有关。
官方 SQLite 文档在其UPDATE 文档中说:
从 SQLite 版本 3.15.0 (2016-10-14) 开始,SET 子句中的赋值可以是左侧带括号的列名列表和右侧相同大小的行值。
因此,您可以像这样检查您的 Python 安装使用的是哪个版本的 SQLite:
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.11' # return value from my python 2.7.14 installation
这意味着我将无法使用语法SET (column1, column2) = (value1, value2)
而我必须使用语法SET column1 = value1, column2 = value2
。 希望这可以帮助。
您可以尝试在查询中简单地将列名添加为字符串
import sqlite3
def updatedata():
conn=sqlite3.connect('SCHOOL.db')
cur=conn.cursor()
rno=int(input('Enter roll number whose data to be changed'))
column=input("enter column to be updated")
value=int(input("enter value to set"))
query='UPDATE STUDENT SET '+column+ ' = ? WHERE Rollno = ?'
cur.execute(query,(value,rno))
conn.commit()
print("Record Updated successfully")
conn.close()
据我所知 UPDATE 查询必须看起来像UPDATE table SET (key=value, key2=value2, ...) WHERE <condition>
尝试将查询修改为类似
c.execute("UPDATE settings SET (title=?,LL=?,LR=?,RL=?,RR=?,distanceBack=?) WHERE name=?",(title, LL, LR, RL, RR, distanceBack, title))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.