我想在Notice: Array to string conversion in C:\xampp\htdocs\PD\validate\save-actual.php on line 66
Notice: Array to string conversion in C:\xampp\htdocs\PD\validate\save-actual.php on line 66
Notice: Array to string conversion in C:\xampp\htdocs\PD\validate\save-actual.php on line 66
文件中添加一个新列,并以2的间隔填充其值。这里我写了一些代码......
db
上面的代码为我提供了一个具有相同值的新列。像这样:
import sqlite3
WorkingFile = "C:\\test.db"
con = sqlite3.connect(WorkingFile)
cur = con.cursor()
cur.execute("ALTER table MyTable add column 'WorkingID' 'long'") # Add a column "WorkingID"
rows = cur.fetchall()
iCount = 0
for row in rows:
iCount = iCount + 2
print iCount
cur.execute("UPDATE MyTable SET WorkingID = ?" , (iCount,)) # Here I have question: How to write the WHERE command?
con.commit()
cur.close()
但我想要一个这样的结果:
WorkingID
10
10
10
...
我对代码的问题是,我不知道如何在WorkingID
2
4
6
8
10
...
下编写WHERE
代码。你能帮帮我吗?感谢。
答案 0 :(得分:1)
SQL引擎无法区分行之间的差异。
您应该添加autoincrement或ROWID列,以便将其设置为ID。
我不知道你的桌子的结构,因为你不在这里创建它,而是改变它。
如果您确实要创建它,请创建一个新的INTEGER PRIMARY KEY
列,然后您可以像这样使用WHERE
:
cur.execute(
"CREATE TABLE MyTable"
"(RowID INTEGER PRIMARY KEY,"
"WorkingID INTEGER)")
答案 1 :(得分:0)
如果您的表有一些唯一ID,请获取它们的排序列表(它们的实际值无关紧要,只有它们的顺序):
ids = [row[0] for row in cur.execute("SELECT id FROM MyTable ORDER BY id")]
iCount = 0
for id in ids:
iCount += 2
cur.execute("UPDATE MyTable SET WorkingID = ? WHERE id = ?",
[iCount, id])
如果您没有这样的专栏,请改用rowid
。
答案 2 :(得分:0)
如果您无法在桌面上添加ID,您可以采用一种非常奇怪的方式。所以.. 在循环之前,您进行查询
UPDATE MyTable SET WorkingID = 2 LIMIT 1
之后
iCount = 2
for row in rows:
iCount = iCount + 2
print iCount
cur.execute("UPDATE MyTable SET WorkingID = ? WHERE WorkibgID is NULL LIMIT 1" , (iCount,))
这不是一个好方法,但它应该有用。