小编rch*_*av9的帖子

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

背景

我正在构建一个将数据从 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)

有任何想法吗?谢谢!

python sql-server csv sqlalchemy pandas

5
推荐指数
1
解决办法
7747
查看次数

Excel VBA:适用于长范围的每个循环

我正在使用Excel工作簿中的一些VBA For Each循环,由于某种原因,我的循环到达32,766行后出现运行时错误.我认为这是一个Int/Long类型错误,但我似乎无法弄清楚如何解决它.这是我目前的代码:

' Add Play Call hyperlinks
Dim Rng As Range, Cell As Range
Dim FileName As String
Dim Bureau As String
Dim CopiedFilesDirectory As String
Dim AudioFilePath As String

lastRow = Sheets("CallLog").Range("I" & Rows.Count).End(xlUp).Row

Set Rng = Sheets("CallLog").Range("I" & firstRow & ":I" & lastRow)

For Each Cell In Rng

    FileName = Range("I" & Cell.Row).Value
    MatterNumber = Replace(Range("K" & Cell.Row).Value, "/", "-")
    ContactUsername = Range("M" & Cell.Row).Value
    Bureau = Range("N" & Cell.Row).Value

    CopiedFilesDirectory = ImportCallsUserForm.CopyFilesDirectoryTextBox.Value
    AudioFilePath = CopiedFilesDirectory & …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

2
推荐指数
1
解决办法
1761
查看次数

标签 统计

csv ×1

excel ×1

excel-vba ×1

pandas ×1

python ×1

sql-server ×1

sqlalchemy ×1

vba ×1