Skip to content

Commit 6586804

Browse files
author
Anton Mantulo
committed
fix: add unique keys at table creation in Postgres to fix both upsert and append with insert_conflict columns
1 parent a615402 commit 6586804

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

awswrangler/postgresql.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def _create_table(
6969
index: bool,
7070
dtype: dict[str, str] | None,
7171
varchar_lengths: dict[str, int] | None,
72-
primary_keys: list[str] | None = None,
72+
unique_keys: list[str] | None = None,
7373
) -> None:
7474
if mode == "overwrite":
7575
_drop_table(cursor=cursor, schema=schema, table=table)
@@ -84,8 +84,8 @@ def _create_table(
8484
converter_func=_data_types.pyarrow2postgresql,
8585
)
8686
cols_str: str = "".join([f"{_identifier(k)} {v},\n" for k, v in postgresql_types.items()])[:-2]
87-
if primary_keys:
88-
cols_str += f",\nprimary key ({', '.join([_identifier(k) for k in primary_keys])})"
87+
if unique_keys:
88+
cols_str += f",\nUNIQUE ({', '.join([_identifier(k) for k in unique_keys])})"
8989
sql = f"CREATE TABLE IF NOT EXISTS {_identifier(schema)}.{_identifier(table)} (\n{cols_str})"
9090
_logger.debug("Create table query:\n%s", sql)
9191
cursor.execute(sql)
@@ -589,7 +589,7 @@ def to_sql(
589589
index=index,
590590
dtype=dtype,
591591
varchar_lengths=varchar_lengths,
592-
primary_keys=upsert_conflict_columns,
592+
unique_keys=upsert_conflict_columns or insert_conflict_columns,
593593
)
594594
if index:
595595
df.reset_index(level=df.index.names, inplace=True)

0 commit comments

Comments
 (0)