我想将字典中的数据插入到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等。
答案 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?