我是 python 新手(我相信你可以从我的代码中看出)并且基本上已经编写了一个示例脚本来测试一些核心命令,这样我可以更好地理解事情是如何工作的。除了最后一个“插入”命令外,我已经让所有东西都按设计运行——经过数小时的谷歌搜索和试验,我无法弄清楚出了什么问题,所以如果有人能告诉我需要改变什么并帮助我理解原因,我将不胜感激(我确定这是基本的,但我很难过!)。
下面是给我带来麻烦的行:
c.execute("INSERT OR IGNORE INTO {tn} ({cn1}, {cn2}, {cn3}, {cn4}) VALUES ({VID}, {VSnu}, {VIN}, {VName})".\
format(tn=table_name, cn1=column1, cn2=column2, cn3=column3, cn4=column4, VID=ID, VSnu=Snu, VIN=IN, VName=Name))
这是上下文的整个脚本,如果有帮助的话:
import sqlite3
sqlite_file = '/test_database.sqlite' # name of the sqlite database file
table_name = 'test_table'
column1 = 'my_1st_column'
column2 = 'my_2nd_column'
column3 = 'my_3rd_column'
column4 = 'my_4th_column'
ID = int(123456)
Base = 'Arnold'
Snu = 'test'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
c.execute("UPDATE {tn} SET {cn2}=('Snu'), {cn3}=('Muh'), {cn4}=('Arnold_A') WHERE {cn1}=({NID})".\
format(tn=table_name, cn1=column1, cn2=column2, cn3=column3, cn4=column4, NID=ID))
i = 1
while(i<15):
if i == 1: IN = 'B'
if i == 2: IN = 'C'
if i == 3: IN = 'D'
if i == 4: IN = 'E'
if i == 5: IN = 'F'
if i == 6: IN = 'G'
if i == 7: IN = 'H'
if i == 8: IN = 'I'
if i == 9: IN = 'J'
ID = ID+1
i = i+1
Name = Base + '_' + IN
params = (Snu, IN, Name)
c.execute("INSERT OR IGNORE INTO {tn} ({cn1}, {cn2}, {cn3}, {cn4}) VALUES ({VID}, {VSnu}, {VIN}, {VName})".\
format(tn=table_name, cn1=column1, cn2=column2, cn3=column3, cn4=column4, VID=ID, VSnu=Snu, VIN=IN, VName=Name))
if(i == 10): break
conn.commit()
conn.close()
如果隔离,它将很好地写入“VID”项目(这是一个整数列和表的主键),但之后的所有内容都解释为一列,我得到“没有这样的列:[值]”错误.
无论“VID”之后出现什么,我都会收到此错误 - 无论是任何变量,如上面的命令所示,或者我尝试插入直接字符串值。如果有帮助,这些其他列只是文本列。