Python 使用违反UniqueConstraint/w SqlAlchemy将pd.DataFrame摄取到SQL数据库的最佳方法
我想使用SqlAlchemy将pd.DataFrame中的数据摄取到sql数据库中。数据包含一些仍在数据库中的行,这会导致UniqueViolation错误。这个问题的实际运行版本在行上有太多的循环,并提交每一行Python 使用违反UniqueConstraint/w SqlAlchemy将pd.DataFrame摄取到SQL数据库的最佳方法,python,pandas,sqlalchemy,Python,Pandas,Sqlalchemy,我想使用SqlAlchemy将pd.DataFrame中的数据摄取到sql数据库中。数据包含一些仍在数据库中的行,这会导致UniqueViolation错误。这个问题的实际运行版本在行上有太多的循环,并提交每一行 data = pd.read_json('data_to_ingest_into_db.JSON') for _, row in data.iterrows(): try: session.add(generate_obs_data_object(row_dic
data = pd.read_json('data_to_ingest_into_db.JSON')
for _, row in data.iterrows():
try:
session.add(generate_obs_data_object(row_dict))
session.commit()
except (
exc.IntegrityError, errors.UniqueViolation,
exc.DataError) as e:
session.rollback()
continue
我相信这个解决办法并不是解决这类问题的最佳办法。我认为像bulk_insert和replace这样的东西可以修复它,但是SqlAlchemy并没有提供这样的功能 您可以加载到一个暂存表中,然后合并新行?@datanoveler您的意思是从数据库中获取整个表以将其视为暂存表吗?该表有数百万行。否若要将数据帧视为暂存表,请将其加载到临时/暂存表中,然后处理SQL中的逻辑,即仅加载增量并用较新的增量替换唯一行。