【发布时间】:2021-01-22 19:36:04
【问题描述】:
我正在尝试找出一种方法来检查我从数据帧加载到 SQL 表中的数据,以便加载丢失的数据并避免加载重复数据。
这是一个非常粗略的想法。
sql_data = []
data = [(2020-01-01, Monday, 20, 0.1), (2020-01-02, Tuesday, 12, 0.4), (2020-01-01, Wednesday, 26, 0.3)]
cursor.execute('''Select * FROM Table ''')
for row in cursor.fetchall():
sql_data.append(row)
if data in sql_data:
pass
else:
query = '''INSERT INTO Table (Time, Day, Number, Decimal)
VALUES (?, ?, ?, ?)'''
cursor.execute(query, data)
conn.commit()
【问题讨论】:
-
您可以在表上设置唯一键约束,这将拒绝任何可能(尝试)加载的重复数据。此外,您可以尝试使用
DataFrame.to_sql()函数直接从DataFrame 加载数据。 -
听起来你想做一个“upsert”。对该词的网络搜索应该会给你一些想法。
-
@GordThompson - 在我看来(并且可能误解了这个问题)OP 想要填补空白,而不是更新当前记录。
标签: python sql python-3.x list pyodbc