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

时间:2017-10-15 02:59:35

标签: python sql 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而不是类型。我几乎没有python或sqlite的经验,所以任何帮助将不胜感激!谢谢你提前。

1 个答案:

答案 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)