【发布时间】:2020-12-18 18:19:19
【问题描述】:
我有一个数据框。其中一列是时间戳类型。我的 SQL 列是 TEXT 类型。我需要使用数据框中的列更新 SQL 表中的记录。
根据 pysqlite 教程,我需要将其转换为列表,然后使用索引创建一个元组,以便能够更新 SQL 表。但它被拒绝了,因为它说“InterfaceError:错误绑定参数 0 - 可能是不受支持的类型”。感谢您的帮助!
cursor = con.cursor()
DynamicTPIndex = DynamTPs.index.values.tolist()
DynTP = DynamTPs['Dynamic_TP_1_lane_Time'].tolist()
cursor = con.cursor()
sql_update_queryTP = '''UPDATE GBPAUD_TA SET Dynamic_TP_1_lane_Time = ? WHERE Ticket = ?'''
dataTP = zip(DynTP, DynamicTPIndex)
cursor.executemany(sql_update_queryTP, dataTP)
con.commit()
con.close()
几件事:我的日期时间格式是 ISO8601 格式。 样本数据:
Ticket Dynamic_TP_1_lane_Time Dynamic_TP_1_lane_Price
356137189 2020-06-01 06:17:00 1.8423
356178592 2020-06-01 08:30:00 1.8392
356188961 2020-06-01 09:13:00 1.836
356666230 2020-06-02 17:00:00 1.8281
356782143 2020-06-02 17:58:00 1.8219
356810290 2020-06-02 20:09:00 1.8217
356893467 2020-06-03 03:16:00 1.8167
我尝试从这里用合并功能替换 zip:https://www.geeksforgeeks.org/python-merge-two-lists-into-list-of-tuples/。绑定同样的错误
【问题讨论】:
-
您正在尝试将
Dynamic_TP_1_lane_Time列分配给一个列表,这没有多大意义(它需要是一个标量值)。请在此处解释您的感知逻辑。 -
不是我的逻辑。只是尝试做某事,然后按照我找到的拼凑指导进行操作。这篇文章来自pynative.com/python-sqlite-update-table,在“Python 使用游标的 executemany() 更新 SQLite 表的多行”一节中。他在那里用 executemany() 说,你正在传递一个列表......?
-
好的,我明白了。也许包括您绑定的数据以及类型,因为这似乎是错误的原因。
-
根据上面提供的数据,索引(“Ticket”)是分配给变量 DynamicTPIndex 的第一个列表,第一列(“Dynamic_TP_1_lane_Time”)是分配给 DynTP 的第二个列表。您需要将这些单独发布在上面吗?