我有一个访问表,我正在尝试从数据框更新(我在使用 sqlalchemy 语法时遇到了很多困难,因此以下代码可能非常笨拙,有冗余):
import pandas as pd
import pyodbc
import urllib
from sqlalchemy import create_engine
Results = [[178, 10], [179, 15], [180, 14]]
Res_summary = pd.DataFrame (Results, columns = ['ID', 'Score'])
cnn_str = r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Folder\results.accdb;'
cnn_url = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(cnn_str)}"
acc_engine = create_engine(cnn_url)
Res_summary.to_sql('My_results', acc_engine, if_exists='append')
所以现在如果我下次运行脚本时使用不同的 ID,这些行将被添加到访问表中。但是,如果我尝试使用相同的 ID 和不同的分数再次运行脚本,我希望更新这些 ID 的分数,而不是重复。我知道有一个“upsert”选项,但我不明白如何消除特定行而不是整个表的重复项。