我正在尝试将一些信息放入数据库
import sqlite3
conn = sqlite3.connect("tutorial.db")
c=conn.cursor()
def create_table():
c.execute("CREATE TABLE IF NOT EXISTS stuffPlot(unix REAL,datestamp Text,keyword TEXT,value REAL)")
def data_entry(x,y,z,w):
c.execute("INSERT INTO stuffPlot VALUES({},{},{},{})".format(x,y,z,w))
conn.commit()
c.close()
conn.close()
x=int(input("enter a number"))
y=str(input("enter a str"))
z=int(input("enter a number"))
w=str(input("enter a str"))
create_table()
data_entry(x,y,w,z)
我想写数据库,但是它创建了以下数据库 错误:
data_entry(x,y,w,z) 追溯(最近一次通话): 文件“”,第1行,位于 文件“”,第2行,位于data_entry中 sqlite3.OperationalError:没有这样的列:name
答案 0 :(得分:2)
您的字符串缺少引号,因此它们被视为列名,请尝试以下操作:
for i in range(len(dgu):
for j in range(len(solu)):
if solu[j] in dgu[i]:
print(dgu[i])
# don't need elsepass here, as it serves no purpose
# don't need to increment i/j in a for loop manually as it iterates through the range created from the length of dgu/solu
修改
您应该这样做,而不是上面的行(它容易受到SQL注入的攻击):
c.execute("INSERT INTO stuffPlot VALUES({},'{}','{}',{})".format(x,y,z,w))
答案 1 :(得分:0)
嘿,你的最后一行叫这个:
data_entry(x,y,w,z)
它的x,y,w,z,但是在您的函数定义中,您会收到以下消息:
def data_entry(x,y,z,w): #sequence is x,y,z,w
因此,对于什么是什么变量造成了一些困惑。 而且您的字符串也需要用@scope括在单引号内。
这是一个工作代码
import sqlite3
conn = sqlite3.connect("tutorial.db")
c=conn.cursor()
def create_table():
c.execute("CREATE TABLE IF NOT EXISTS stuffPlot(unix REAL,datestamp Text,keyword TEXT,value REAL)")
def data_entry(x,y,z,w):
c.execute("INSERT INTO stuffPlot VALUES({},'{}',{},'{}');".format(x,y,z,w))
#fixed the quotes above
conn.commit()
c.close()
conn.close()
x=int(input("enter a number"))
y=str(input("enter a str"))
z=int(input("enter a number"))
w=str(input("enter a str"))
create_table()
data_entry(x,y,z,w) #fixed x,y,w,z to x,y,z,w
如有疑问,请发表评论。