(
cfg,
table,
returning,
*,
set_lambda=None,
sort_by_parameter_order=False,
index_elements=None,
)
| 138 | |
| 139 | @upsert.for_db("postgresql") |
| 140 | def _upsert( |
| 141 | cfg, |
| 142 | table, |
| 143 | returning, |
| 144 | *, |
| 145 | set_lambda=None, |
| 146 | sort_by_parameter_order=False, |
| 147 | index_elements=None, |
| 148 | ): |
| 149 | from sqlalchemy.dialects.postgresql import insert |
| 150 | |
| 151 | stmt = insert(table) |
| 152 | |
| 153 | table_pk = inspect(table).selectable |
| 154 | |
| 155 | if set_lambda: |
| 156 | if index_elements is None: |
| 157 | index_elements = table_pk.primary_key |
| 158 | stmt = stmt.on_conflict_do_update( |
| 159 | index_elements=index_elements, set_=set_lambda(stmt.excluded) |
| 160 | ) |
| 161 | else: |
| 162 | stmt = stmt.on_conflict_do_nothing() |
| 163 | |
| 164 | stmt = stmt.returning( |
| 165 | *returning, sort_by_parameter_order=sort_by_parameter_order |
| 166 | ) |
| 167 | return stmt |
| 168 | |
| 169 | |
| 170 | _extensions = [ |
nothing calls this directly
no test coverage detected