Python-将字典插入SQLite3
我有一本有14个键的字典 首先,我创建了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
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谷歌搜索,但没有发现任何有用的东西。