所以我希望我的数据库包含我在python中定义的数据类型'Item'
class Item:
Name = str
L = Location #An Array
Quantity = int
Description = str
我创建了一个表作为数据类型,我使用的GUI说该列是'Item'类型:
def CreateTable(DatabaseName ,TableName):
conn = s.connect(DatabaseName)
print ("Opened database successfully")
conn.execute('CREATE TABLE ' + TableName + ' (id integer, Items Item);')
print ("Table created successfully")
conn.close()
现在我已经想要插入值了,所以我定义了以下函数:
def AddItemToTable(DatabaseName, TableName, Items):
conn = s.connect(DatabaseName)
c = conn.cursor()
c.execute('INSERT INTO '+TableName + '(id, Items) \
VALUES(1,'+Items+')')
conn.commit
conn.close()
我执行这些功能
I = Item
CreateTable('HelloWorld.db', 'again1')
AddItemToTable('HelloWorld.db', 'again1', 'I')
制作数据库,制作表格,它有两列,每列都有正确的类型,但是它说没有列I.如果我让我没有引号,它告诉我它需要一个str而不是类型。我几乎没有python或sqlite的经验,所以任何帮助将不胜感激!谢谢你提前。
答案 0 :(得分:0)
假设 Item 实际上是文本类型,则需要用引号括起值。因此,对SQL字符串使用双引号,对字符串文字使用单引号。
c.execute("INSERT INTO "+TableName+" (id, Items) VALUES (1,'"+Items+"')")
但实际上更好的方法是将值作为参数传递给cursor.execute()
中的第二个参数而不用担心引用封闭:
c.execute("INSERT INTO "+TableName+" (id, Items) VALUES (1, ?)", Items)