python - 在 pandas.to_sql() 中使用 'callable' 方法的示例?

标签 python sql pandas postgresql

我正在尝试创建一个具有 ON CONFLICT 的特定插入语句参数(我正在上传到 Postgres 数据库); df.to_sql(method='callable') 会允许吗?或者它是为了其他目的?我已经通读了文档,但我无法理解这个概念。我在这个网站和其他网站上四处寻找类似的问题,但我还没有找到。如果可能的话,我很想看看如何在实践中使用“可调用”方法的示例。关于如何使用 ON CONFLICT 从 Pandas 有效加载大量行的任何其他想法逻辑也将不胜感激。在此先感谢您的帮助!

最佳答案

我刚刚遇到了类似的问题,然后是 this answer我想出了如何发送的解决方案 dfpotgresSQL ON CONFLICT :

1. 向数据库发送一些初始数据以创建表

from sqlalchemy import create_engine
engine = create_engine(connection_string)

df.to_sql(table_name,engine)

2.添加primary key
ALTER TABLE table_name ADD COLUMN id SERIAL PRIMARY KEY;

3.在要检查唯一性的列(或列)上准备索引
CREATE UNIQUE INDEX review_id ON test(review_id);

4.用sqlalchemy映射sql表
from sqlalchemy.ext.automap import automap_base
ABase = automap_base()

Table = ABase.classes.table_name
Table.__tablename__ = 'table_name'

6.做你的insert on conflict和:
from sqlalchemy.dialects.postgresql import insert

insrt_vals = df.to_dict(orient='records')
insrt_stmnt = insert(Table).values(insrt_vals)

do_nothing_stmt  = insrt_stmnt.on_conflict_do_nothing(index_elements=['review_id'])
results = engine.execute(do_nothing_stmt)

关于python - 在 pandas.to_sql() 中使用 'callable' 方法的示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59845206/

相关文章:

sql - 如何避免多次数据库往返和大量无关数据?

python - 如果工作表不存在,Pandas 将工作表附加到工作簿,否则覆盖工作表

python - 跨浏览器的 Jupyter Notebook 输出不一致

python - 带有 PTVS 的 Anaconda - "conda list"与 "pip list"和 PTVS 不同

python - 如果在 python 方法调用中参数为 None,则使用默认参数

python - Pandas Dataframe 删除索引条件为 true 的项目

sql - 对订单详细信息进行购物篮分析

MySQL:无法创建表(错误号:150)

python - 点积过滤数据框 pandas

python:使用一个类来跟踪另一个类使用的数据