Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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-将字典插入SQLite3_Python_Database_Sqlite - Fatal编程技术网

Python-将字典插入SQLite3

Python-将字典插入SQLite3,python,database,sqlite,Python,Database,Sqlite,我有一本有14个键的字典 首先,我创建了createTableofRecorder函数: def createTableOfRecords(self): create_table = '''CREATE TABLE IF NOT EXISTS records(Budget TEXT , Commitment TEXT, Contract_Type TEXT , Customer_Type TEXT, Duration TEXT , Goals TEXT, Pace TEX

我有一本有14个键的字典

首先,我创建了
createTableofRecorder
函数:

    def createTableOfRecords(self):
        create_table = '''CREATE TABLE IF NOT EXISTS records(Budget TEXT , Commitment TEXT, Contract_Type TEXT , Customer_Type TEXT, Duration TEXT , Goals TEXT, Pace TEXT , 
                        Procedures_and_Regulations TEXT, Resources TEXT , Scope TEXT, Team_Availability TEXT , Team_Distribution TEXT, Team_Size TEXT , Uncertainty TEXT);'''
        self.cursor.execute(create_table)
        self.connection.commit()
    global var_dict
    var_dict = dict(Budget="Fixed",
                    Commitment="Low",
                    Contract_Type="Hybrid",
                    Customer_Type="Market",
                    Duration="Long",
                    Goals="Unclear",
                    Pace="Fast",
                    Procedures_and_Regulations="None",
                    Resources="Standart",
                    Scope="Rigid",
                    Team_Availability="Fully",
                    Team_Distribution="Global",
                    Team_Size="Small",
                    Uncertainty="Predictable")

    def insertRecords(self):
        self.cursor.execute('INSERT INTO records (Budget,Commitment,Contract_Type,Customer_Type,Duration,Goals,Pace,'
                                                 'Procedures_and_Regulations,Resources,Scope,Team_Availability,'
                                                 'Team_Distribution,Team_Size,Uncertainty) '
                            'VALUES (:Budget, :Commitment, :Contract_Type, :Customer_Type, :Duration, '
                                    ':Goals, :Pace, :Procedures_and_Regulations, :Resources, :Scope, :Team_Availability, '
                                    ':Team_Distribution, :Team_Size, :Uncertainty);'), var_dict
        self.connection.commit()
以及已成功创建列的表。 之后,我尝试使用
insertRecords
函数插入数据:

    def createTableOfRecords(self):
        create_table = '''CREATE TABLE IF NOT EXISTS records(Budget TEXT , Commitment TEXT, Contract_Type TEXT , Customer_Type TEXT, Duration TEXT , Goals TEXT, Pace TEXT , 
                        Procedures_and_Regulations TEXT, Resources TEXT , Scope TEXT, Team_Availability TEXT , Team_Distribution TEXT, Team_Size TEXT , Uncertainty TEXT);'''
        self.cursor.execute(create_table)
        self.connection.commit()
    global var_dict
    var_dict = dict(Budget="Fixed",
                    Commitment="Low",
                    Contract_Type="Hybrid",
                    Customer_Type="Market",
                    Duration="Long",
                    Goals="Unclear",
                    Pace="Fast",
                    Procedures_and_Regulations="None",
                    Resources="Standart",
                    Scope="Rigid",
                    Team_Availability="Fully",
                    Team_Distribution="Global",
                    Team_Size="Small",
                    Uncertainty="Predictable")

    def insertRecords(self):
        self.cursor.execute('INSERT INTO records (Budget,Commitment,Contract_Type,Customer_Type,Duration,Goals,Pace,'
                                                 'Procedures_and_Regulations,Resources,Scope,Team_Availability,'
                                                 'Team_Distribution,Team_Size,Uncertainty) '
                            'VALUES (:Budget, :Commitment, :Contract_Type, :Customer_Type, :Duration, '
                                    ':Goals, :Pace, :Procedures_and_Regulations, :Resources, :Scope, :Team_Availability, '
                                    ':Team_Distribution, :Team_Size, :Uncertainty);'), var_dict
        self.connection.commit()
但我没有在数据库表中插入任何值。 我收到了以下错误消息:

self.cursor.execute('插入到记录中(预算、承诺、合同类型、客户类型、持续时间、目标、速度,'sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用14个,提供了0个。

有人知道我做错了什么吗? 谢谢!

你写了:

self.cursor.execute( 'insert ...' ), var_dict
var_dict
没有作为参数传递给
execute
。它在括号外。相反,您是
execute
var_dict
的结果,然后将其抛出

您希望像这样将var_dict传递到execute

self.cursor.execute( 'insert ...', var_dict )
这里有一个不同的快速说明

>>> var_dict = dict(foo="bar")
>>> def test(sql, *optional):
...     print(f"Got sql '{sql}' and args {optional}\n")
... 
>>> test('insert...'), var_dict
Got sql 'insert...' and args ()

(None, {'foo': 'bar'})
>>> test('insert...', var_dict)
Got sql 'insert...' and args ({'foo': 'bar'},)
你写过:

self.cursor.execute( 'insert ...' ), var_dict
var_dict
没有作为参数传递给
execute
。它在括号外。相反,您是
execute
var_dict
的结果,然后将其抛出

您希望像这样将var_dict传递到execute

self.cursor.execute( 'insert ...', var_dict )
这里有一个不同的快速说明

>>> var_dict = dict(foo="bar")
>>> def test(sql, *optional):
...     print(f"Got sql '{sql}' and args {optional}\n")
... 
>>> test('insert...'), var_dict
Got sql 'insert...' and args ()

(None, {'foo': 'bar'})
>>> test('insert...', var_dict)
Got sql 'insert...' and args ({'foo': 'bar'},)

这回答了你的问题吗?这回答了你的问题吗?你没有把你的dict作为参数传递给
execute
…必须注意你的括号。上面的两个答案都很好,我都看到了,但仍然没有执行代码。@Shawn你是什么意思?我粘贴了错误消息,尝试用谷歌搜索,但没有执行发现任何有用的东西。这回答了你的问题吗?这回答了你的问题吗?你没有将你的dict作为参数传递给
execute
…必须注意你的括号。上面的两个答案都很好,我已经看到了,但仍然无法执行代码。@Shawn你是什么意思?我已经粘贴了错误消息,尝试了吗o谷歌搜索,但没有发现任何有用的东西。