将数据帧传递给 pandas 中的 SQL 时,如何检查记录是否存在?

rch*_*av9 5 python sql-server csv sqlalchemy pandas

背景

我正在构建一个将数据从 CSV 传递到 MS SQL 数据库的应用程序。该数据库被用作我的企业所有此类记录(电话)的存储库。当我运行该应用程序时,它会读取 CSV 并将其转换为 Pandas 数据帧,然后我使用 SQLAlchemy 和 pyodbc 将记录附加到 SQL 中的表中。

但是,由于我正在处理的内容的性质,我们通常已经将数据导入到表中。我正在寻找一种方法来在将每条记录附加到表之前检查我的主键是否存在(SQL 表和数据框中的列)。

当前代码

# save dataframe to mssql DB engine = sql.create_engine('mssql+pyodbc://CTR-HV-DEVSQL3/MasterCallDb') df.to_sql('Calls', engine, if_exists='append')

样本数据

我的 CSV 作为 pandas 数据框导入(主键是 FileName,它始终是唯一的),然后传递到 MS SQL。这是我的数据框(df):

+---+------------+-------------+
|   |  FileName  |    Name     |
+---+------------+-------------+
| 1 | 123.flac   | Robert      |
| 2 | 456.flac   | Michael     |
| 3 | 789.flac   | Joesph      |
+---+------------+-------------+
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Ben*_*per 2

如果您迭代DataFrame.iterrows()行,然后在每次迭代中使用ON DUPLICATE作为您的键值 FileName 以不再添加它,会怎么样?