为了账号安全,请及时绑定邮箱和手机立即绑定

如何将python嵌套字典中的多行插入sqlite db

如何将python嵌套字典中的多行插入sqlite db

莫回无 2021-09-28 14:13:40
我读取了一个 yaml 文件并将值提取到 python 列表中。我想将值转储到 sqlite 数据库中,并且列表的结构是嵌套的。我尝试了各种将数据存储在我的数据库中的方法,如下所示,但它们没有解决问题。当格式列表 ('a','b','c') 时,我可以毫无问题地插入表中。但是当我有一个键值对时,我遇到了问题。Data structure:  [   {   'CPU': 2,    'jobname': 'Job1',    'memory': '4 GB',    'problem': 'Prob1',    'team': '1'},{   'CPU': 4,    'jobname': 'Job2',    'memory': '256 GB',    'problem': 'Prob3',    'team': '3'},{   'CPU': 5,    'jobname': 'Job3',    'memory': '8 GB',    'problem': 'Prob5',    'team': '1'}]这是我尝试过的,但看起来它们的数据结构略有不同:Python : How to insert a dictionary to a sqlite database?# read data from the config filedef read_yaml(file):    with open(file, "r") as stream:        try:            config = yaml.safe_load(stream)        except yaml.YAMLError as exc:            print(exc)            print("\n")    return config    q = read_yaml("queue.yaml")  # establish connection to sqlite database and save into db conn = sqlite3.connect('queues.db') c = conn.cursor() # create a sqlite3 database to store the dictionary values def create_table():    c.execute("CREATE TABLE IF NOT EXISTS queues(job TEXT, team        TEXT, problem TEXT, CPU INT, memory TEXT)") create_table() # insert data into the tabledef dynamic_data_entry():    for item in q:        c.execute("INSERT INTO queues VALUES (?, ?, ?, ?, ?)", item)    conn.commit()dynamic_data_entry()这是输出错误:回溯(最近一次调用最后一次):File "queue_info.py", line 50, in <module>dynamic_data_entry()File "queue_info.py", line 47, in dynamic_data_entryc.execute("INSERT INTO queues VALUES (?, ?, ?, ?, ?)", item)sqlite3.ProgrammingError: Binding 1 has no name, but you supplied a  dictionary (which has only names).
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

sqlite3支持字典使用占位符语法:[key]代替?。您还可以使用executemany代替for item in q:


c.executemany("INSERT INTO queues (job, team, problem, CPU, memory) VALUES

    (:jobname, :team, :problem, :CPU, :memory);", data)


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 359 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信