Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何将字典插入sqlite数据库?_Python_Sqlite_Dictionary - Fatal编程技术网

Python:如何将字典插入sqlite数据库?

Python:如何将字典插入sqlite数据库?,python,sqlite,dictionary,Python,Sqlite,Dictionary,我有一个sqlite数据库,其中的表具有以下列: id(int) , name(text) , dob(text) 我想在其中插入以下词典: {"id":"100","name":"xyz","dob":"12/12/12"} 字典键是列名。如何实现它?例如,如果c=conn.cursor(),并且您的字典名为dict,您的表名为tablename,那么您可以编写 c.execute('insert into tablename values (?,?,?)', [dict['id'], d

我有一个sqlite数据库,其中的表具有以下列:

id(int) , name(text) , dob(text)
我想在其中插入以下词典:

{"id":"100","name":"xyz","dob":"12/12/12"}

字典键是列名。如何实现它?

例如,如果
c=conn.cursor()
,并且您的字典名为
dict
,您的表名为
tablename
,那么您可以编写

c.execute('insert into tablename values (?,?,?)', [dict['id'], dict['name'], dict['dob']])

这将根据需要将字典的元素插入表中。

查看文档,您可以添加一行:

c.execute("INSERT INTO stocks VALUES (?,?,?)", [dict["id"], dict["name"], dict["dob"]])
或者,您可以使用列表一次性添加多行:

# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

根据Gareth的回答,如果您使用的是
MySQLdb
,您可以使用
executemany
,并通过
dict
使用
dict.values()

传递一个值列表,您可以直接从
dict.values()获取这些值。以下是一种保护参数安全的方法。(可能需要在tablename部门进行抛光)


要直接使用词典,您可以执行以下操作:

user1 = {"id":100, "name": "Rumpelstiltskin", "dob": "12/12/12"}
c.execute("INSERT INTO users VALUES (:id, :name, :dob)", user1) 
与实例/模型一起使用:

class User:                                                                      

    def __init__(self, name, dob):                                            
        self.name = name                                                             
        self.dob = dao  

u1 = User("Rumpelstiltskin", "12/12/12")
c.execute("INSERT INTO users VALUES (:name, :dob)", u1.__dict__)

id在Python中是一个关键字,因此如果您想将它用作实例变量的标识符,我建议使用_id(与表的主键名相同)

你试过什么?您如何连接到数据库?您是否正在使用任何类型的ORM?能否提供一些您尝试过的代码?您无法轻松插入词典,但可以插入列表。看看一个可能的解决方案是在中修改类IterChars()。但我没能适应它。看一看可能也有帮助。这是否回答了你的问题?也许可以更新这个来显示如何插入asker字典列表?因此,我认为你的答案比我的好。使用此方法时,请小心排序,因为光标将根据顺序插入,而字典不保持顺序。小更新:字典现在从3.6开始保持顺序,从3.7开始,此行为将在语言规范中。
class User:                                                                      

    def __init__(self, name, dob):                                            
        self.name = name                                                             
        self.dob = dao  

u1 = User("Rumpelstiltskin", "12/12/12")
c.execute("INSERT INTO users VALUES (:name, :dob)", u1.__dict__)