我做了下一个Query来更新我的数据库中的一行。
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"(":语法错误 我知道问号并不正确。我无法找出确切的解决方案。有人可以解释我的问题是什么吗?
答案 0 :(得分:3)
您可以使用以下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。
答案 1 :(得分:0)
回答你的问题(如果有人想知道的话)
有人可以解释我的问题是什么吗?
我认为这很可能与你的python安装使用的SQLite版本有关 官方SQLite文档在其UPDATE documentation中说明了
从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
。希望这会有所帮助。
答案 2 :(得分:0)
您可以尝试在查询中简单地将列名添加为字符串
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()
答案 3 :(得分:-1)
据我所知
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))