【发布时间】:2021-08-15 01:39:24
【问题描述】:
我有一个带有两个表的 MySQL 数据库。 Files 保留先前解析的 CSV 文件的记录 - 我可以成功地将其所有行读入变量
然后我会在指定文件夹中的文件中进行遍历并执行以下操作:
- 是我感兴趣的文件名格式吗?
21-05-14.CSV并且它不在先前解析的文件列表中。如果之前已经解析过或者不是正确的文件类型,请忽略它! - 解析感兴趣的文件以提取到变量中,
PowerGenListall time:power 值对 - 对于
PowerGenList中的每一行,提取timestampval和powerval并使用它们构造SQL 以将这些值添加到MySQL 数据库表DTP
Example PowerGenList = [[datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012'], [datetime.datetime(2015, 12, 29, 14, 10), '0.012']]
- 当我在调试模式 (Python3.6) 下通过 VSCode 运行此程序时,我会打印 SQL。
INSERT INTO DTP (DT,PWR) VALUES('2015-12-29 14:10:00','0.012');,我觉得哪个不错? - 当我运行
cur.execute(sql)时,我收到以下错误,并直接跳转到except:路径 - (我完全不知道如何分析它失败的原因)
Exception has occurred: InterfaceError
(0, '')
File "/home/greg/currentGenerated/SBEAM/SunnyCSV2DB-v6.py", line 210, in add_days_power_to_DTP_table
cur.execute(sql)
During handling of the above exception, another exception occurred:
File "/home/greg/currentGenerated/SBEAM/SunnyCSV2DB-v6.py", line 215, in add_days_power_to_DTP_table
addcon.rollback()
File "/home/greg/currentGenerated/SBEAM/SunnyCSV2DB-v6.py", line 245, in <module>
add_days_power_to_DTP_table(con, PowerGenList)
功能码为:
def add_days_power_to_DTP_table(addcon, PowerGenList):
PowerGenList.__len__
print(PowerGenList)
table_name = 'DTP'
timestamp_column = 'DT'
power_column = 'PWR'
cur = addcon.cursor()
try:
for row in PowerGenList:
timestampval = row[0]
powerval = row[1]
sql = "INSERT INTO %s (%s,%s) VALUES('%s','%s');" % (table_name, timestamp_column, power_column, timestampval.strftime('%Y-%m-%d %H:%M:%S'), powerval)
print('DTP SQL statement = ' + sql)
cur.execute(sql)
addcon.commit()
except:
#print 'DB append failed!'
syslog.syslog('SunnyData DB append failed')
addcon.rollback()
如果相关,我的表格应该是这样的结构:
def recreateDB(): # NOT USED but useful for reference & debug - keep up to date!
NewFiles = "CREATE TABLE IF NOT EXISTS 'SunnyData2'.'Files' ('idfiles' int(5) NOT NULL AUTO_INCREMENT, 'FN' varchar(15) NOT NULL, 'FD' DATETIME NOT NULL, PRIMARY KEY('idfiles'));"
NewDTP = "CREATE TABLE IF NOT EXISTS 'SunnyData2'.'DTP' ('idDTP' int(5) NOT NULL AUTO_INCREMENT, 'DT' DATETIME NOT NULL, 'PWR' varchar(6) NOT NULL, PRIMARY KEY('idDTP'));"
【问题讨论】:
标签: python mysql database pymysql