【问题标题】:sqlite3.OperationalError: no such column: - Pythonsqlite3.OperationalError:没有这样的列:- Python
【发布时间】:2018-01-31 12:15:03
【问题描述】:

我正在尝试将输入中的某些内容插入到我的数据库中。但得到错误:

sqlite3.OperationalError:没有这样的列:kundename

import sqlite3

conn = sqlite3.connect('datenbank.db')
print ("Opened database successfully")

kundenname= input("Kundename: ")
auftragstyp= input("Auftragstyp: ")
auftragsurl= input("Auftragsurl: ")
anzahl= input("Anzahl der Bewertungen: ")

conn.execute("INSERT INTO kundenname VALUES (kundename,auftragstyp,auftragsurl,anzahl)", (kundenname, auftragstyp,         auftragsurl,  anzahl))

conn.commit()
print ("Records created successfully")
conn.close()

但如果我喜欢:

import sqlite3

conn = sqlite3.connect('datenbank.db')

print ("Opened database successfully")

conn = conn.execute("SELECT ID, kundename from kundenname")
for row in conn:
print ("ID = ", row[0])
print ("kundename = ", row[1])
print ("Operation done successfully")
conn.close()

然后它可以工作并向我显示基地中的数据。但是为什么要插入说 column dosent excist 呢?

非常感谢!

【问题讨论】:

  • kundenname 中的错字?
  • 不,我在 DB 中这样写到 ;)

标签: python sqlite


【解决方案1】:

我认为你对这一行有问题:

conn.execute("INSERT INTO kundenname VALUES 
(kundename,auftragstyp,auftragsurl,anzahl)", (kundenname, auftragstyp,         
auftragsurl,  anzahl))

这不是插入方式,试试这个:

conn.execute("INSERT INTO kundenname 
('kundename','auftragstyp','auftragsurl','anzahl') VALUES (" + 
str(kundename) +"," + str(auftragstyp) + "," +  str(auftragsurl) + "," 
+ str(anzahl)+")"

【讨论】:

  • 然后它说: sqlite3.OperationalError: no such column: Michi ,他看起来像我放入输入中的列。
  • 只有当我使用数字作为输入时才有效.. 如果我添加字母,那么它会出现列不存在的错误 emm
  • 这是因为 SQL 需要在每个字符串值周围加上单引号,但对于数值则不需要。因此,这完全取决于您的数据库字段类型以及如何插入数据。因此,如果 auftragsurl 是一个文本字段,则 VALUE 应该类似于 ...",'" + str(auftragsurl) + '","... 并且整数插入看起来像 ..., anzahl,... 假设 anzahl 是一个整数。
  • 我有 kundename ...+ str(kundename) +... 并且在数据库中 kundename 是文本。他仍然没有将它添加到数据库中,他将输入作为列搜索,但添加一个数字它可以工作..但是为什么如果它是 TEXT :)
  • 我不明白它是否对你有帮助......你能发布更新的代码吗?
【解决方案2】:

解释器抱怨您使用不带引号的字符串。它将它们解释为插入语句中的变量名。试试这个:

conn.execute("INSERT INTO kundenname ('kundename','auftragstyp','auftragsurl','anzahl') VALUES (kundenname, auftragstyp,  auftragsurl,  anzahl)")

【讨论】:

  • 谢谢!得到错误: sqlite3.OperationalError: near ",": 语法错误
  • 问题是 VALUE 之前的逗号。我从答案中删除了它。
  • sqlite3.OperationalError:没有这样的列:kundenname
  • 如果我把它改成: + str(kundenname) + ,它来了: sqlite3.OperationalError: no such column: Hans
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 2021-01-12
  • 2021-01-27
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多