Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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:“&引用;sqlite3.OperationalError:没有这样的列:dateandtime“&引用;当制作主键时?_Python_Sqlite_Primary Key - Fatal编程技术网

Python SQLite3:“&引用;sqlite3.OperationalError:没有这样的列:dateandtime“&引用;当制作主键时?

Python SQLite3:“&引用;sqlite3.OperationalError:没有这样的列:dateandtime“&引用;当制作主键时?,python,sqlite,primary-key,Python,Sqlite,Primary Key,我目前正在尝试使用SQLlite3和Python创建一个数据库,但是在设置主键时遇到了问题。我知道它是什么,以及它如何唯一地标识表,但我想将它从它附带的标准“rowid”更改为当前日期。当我尝试向表中添加内容时,结果是: File "Economic_Analyser.py", line 258, in <module> startup() File "Economic_Analyser.py", line 243, in star

我目前正在尝试使用SQLlite3和Python创建一个数据库,但是在设置主键时遇到了问题。我知道它是什么,以及它如何唯一地标识表,但我想将它从它附带的标准“rowid”更改为当前日期。当我尝试向表中添加内容时,结果是:

File "Economic_Analyser.py", line 258, in <module>
    startup()
  File "Economic_Analyser.py", line 243, in startup
    c.execute("INSERT INTO economicdata VALUES (dateandtime, up_GDPgrowthRate, up_GDP, up_GNP, up_GDPperCapita, up_GDPagriculture, up_GDPconstruction, up_GDPmanufacturing, up_GDPmining, up_GDPpublicadmin, up_GDPservices, up_GDPtransport, up_GDPtourism, up_UnemploymentRate, up_EmploymentRate, up_InflationRate, up_CPI, up_InterestRate, up_BalanceOfTrade, up_CurrentAccount, up_Imports, up_Exports, up_FDI, up_GovernmentSpending, up_GovernmentDebt, up_BusinessConfidence, up_Bankruptcies, up_CompetitiveRank, up_CorruptionRank, up_ConsumerConfidence, up_CorporateTaxRate, up_IncomeTaxRate)")
sqlite3.OperationalError: no such column: dateandtime

在INSERT语句中,列名放错了位置。它们应该紧跟在括号/括号中的表名之后,然后需要为每个要插入的值设置占位符

相反,您可以这样做:

columns = ['dateandtime',
 'up_GDPgrowthRate',
 'up_GDP',
 'up_GNP',
 'up_GDPperCapita',
 'up_GDPagriculture',
 'up_GDPconstruction',
 'up_GDPmanufacturing',
 'up_GDPmining',
 'up_GDPpublicadmin',
 'up_GDPservices',
 'up_GDPtransport',
 'up_GDPtourism',
 'up_UnemploymentRate',
 'up_EmploymentRate',
 'up_InflationRate',
 'up_CPI',
 'up_InterestRate',
 'up_BalanceOfTrade',
 'up_CurrentAccount',
 'up_Imports',
 'up_Exports',
 'up_FDI',
 'up_GovernmentSpending',
 'up_GovernmentDebt',
 'up_BusinessConfidence',
 'up_Bankruptcies',
 'up_CompetitiveRank',
 'up_CorruptionRank',
 'up_ConsumerConfidence',
 'up_CorporateTaxRate',
 'up_IncomeTaxRate']
placeholders = ",".join('?'*len(columns))
insert_stmt = f"""INSERT INTO economicdata ({columns}) 
                     VALUES ({placeholders});"""
c.execute(insert_stmt)

现在,当我复制您的代码时,出现了这个错误:``文件“Economic_analyzer.py”,第293行,在startup()文件“Economic_analyzer.py”中,第275行,在startup placeholders=“,”。join('?'*列)TypeError:不能用'list'类型的非int乘以sequence?“我很感激你的帮助。”“忘却现实:我的道歉。”。行中缺少一部分:
占位符=…
。我已经编辑了答案来修复它。
columns = ['dateandtime',
 'up_GDPgrowthRate',
 'up_GDP',
 'up_GNP',
 'up_GDPperCapita',
 'up_GDPagriculture',
 'up_GDPconstruction',
 'up_GDPmanufacturing',
 'up_GDPmining',
 'up_GDPpublicadmin',
 'up_GDPservices',
 'up_GDPtransport',
 'up_GDPtourism',
 'up_UnemploymentRate',
 'up_EmploymentRate',
 'up_InflationRate',
 'up_CPI',
 'up_InterestRate',
 'up_BalanceOfTrade',
 'up_CurrentAccount',
 'up_Imports',
 'up_Exports',
 'up_FDI',
 'up_GovernmentSpending',
 'up_GovernmentDebt',
 'up_BusinessConfidence',
 'up_Bankruptcies',
 'up_CompetitiveRank',
 'up_CorruptionRank',
 'up_ConsumerConfidence',
 'up_CorporateTaxRate',
 'up_IncomeTaxRate']
placeholders = ",".join('?'*len(columns))
insert_stmt = f"""INSERT INTO economicdata ({columns}) 
                     VALUES ({placeholders});"""
c.execute(insert_stmt)