使用python函数将用户定义的数据类型插入SQLite数据库



所以我希望我的数据库包含我在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而不是类型。

假设Item实际上是一个文本类型,则需要用引号将值括起来。因此,SQL字符串使用双引号,字符串文字使用单引号。

c.execute("INSERT INTO "+TableName+" (id, Items) VALUES (1,'"+Items+"')")

但实际上,更好的方法是将值作为参数传递,您可以将其作为cursor.execute()中的第二个参数来传递,而不必担心引号:

c.execute("INSERT INTO "+TableName+" (id, Items) VALUES (1, ?)", Items)

相关内容

  • 没有找到相关文章

最新更新