熊猫:读取数据框的视图

时间:2020-09-29 13:58:51

标签: python sql pandas

这是我的情况:

  1. 我得到带有列(帐号,姓名,年龄,地址等)的csv。
  2. 我将csv读到了熊猫数据框df1。
  3. 然后我在SQL Server上查找一个视图,并匹配帐号以获取密钥。
  4. 我将其读取到新的数据框df2并将结果写入sql表。

问题:如果我要向SQL视图联接传递太多记录,则可能会影响性能。我想避免python代码减慢SQL Server性能。还有其他解决方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

请考虑一次您从Pandas转储到的临时表。然后在视图中运行与帐号匹配的插入选择追加查询。所有匹配和附加过程都在服务器上运行。以下是带有sqlalchemy的素描示例:

# PANDAS DUMP TO TABLE, REPLACING EACH TIME
my_df.to_sql(name="raw_df_tmp", con=engine, if_exists="replace", index=False)

# SQL INSERT-SELECT (VIA TRANSACTION)
with engine.begin() as conn:     

    sql = """INSERT INTO my_table (Col1, Col2, Col3, ...)
             SELECT Col1, Col2, Col3, ...
             FROM raw_df_tmp r           
             WHERE r.accountnumber IN
                (SELECT accountnumber FROM my_view)
          """
    conn.execute(sql)

engine.dispose()