将字典插入SQLlite3

时间:2016-10-03 14:29:00

标签: python sqlite dictionary sqlalchemy

我想将字典中的数据插入到sqlite表中,我使用slqalchemy来执行此操作,字典中的键和列名相同,我想将值插入到相同的列名中桌子。所以这是我的代码:

#This is the class where I create a table from with sqlalchemy, and I want to
#insert my data into.
#I didn't write the __init__ for simplicity
class Sizecurve(Base):
     __tablename__ = 'sizecurve'
     XS = Column(String(5))
     S = Column(String(5))
     M = Column(String(5))
     L = Column(String(5))
     XL = Column(String(5))
     XXL = Column(String(5))

o = Mapping()   #This creates an object which is actually a dictionary
for eachitem in myitems:
    # Here I populate the dictionary with keys from another list
    # This gives me a dictionary looking like this: o={'S':None, 'M':None, 'L':None}
    o[eachitem] = None
for eachsize in mysizes:
    # Here I assign values to each key of the dictionary, if a value exists if not just None
    # product_row is a class and size and stock are its attributes
    if(product_row.size in o):
        o[product_row.size] = product_row.stock
    # I put the final object into a list
        simplelist.append(o)

现在我想将simplelist中保存的字典中的每个值放入sizecurve表中的右列。但是我被困住了,我不知道该怎么做?例如,我有一个像这样的对象:

o= {'S':4, 'M':2, 'L':1}

我想查看列S值为4的行,列M值为2等。

2 个答案:

答案 0 :(得分:0)

是的,这是可能的(虽然你不能错过这张桌子上的主键/外键吗?)。

session.add(Sizecurve(**o))
session.commit()

那应该插入行。

http://docs.sqlalchemy.org/en/latest/core/tutorial.html#executing-multiple-statements

编辑:在第二次阅读时,您似乎试图将所有这些值插入一列?如果是这样,我会利用泡菜。

https://docs.python.org/3.5/library/pickle.html

如果性能是一个问题(pickle非常快,但如果你每秒读取10000次就会成为瓶颈),你应该重新设计表或者使用像PostgreSQL这样支持JSON对象的数据库。

答案 1 :(得分:-1)

我找到了类似问题的答案,虽然这是关于从json文件中读取数据,所以现在我正在努力理解代码并将我的数据类型更改为json,以便我可以将它们插入到正确的地点。 Convert JSON to SQLite in Python - How to map json keys to database columns properly?