18
18
from sqlalchemy import schema as sa_schema
19
19
from sqlalchemy import sql
20
20
from sqlalchemy import types as sqltypes
21
+ from sqlalchemy .sql .base import _DialectArgView
21
22
from sqlalchemy .sql .elements import conv
22
23
from sqlalchemy .sql .elements import Label
23
24
from sqlalchemy .sql .elements import quoted_name
31
32
32
33
from sqlalchemy import Computed
33
34
from sqlalchemy import Identity
34
- from sqlalchemy .sql .base import DialectKWArgs
35
35
from sqlalchemy .sql .elements import ColumnElement
36
36
from sqlalchemy .sql .elements import TextClause
37
37
from sqlalchemy .sql .schema import CheckConstraint
@@ -304,11 +304,11 @@ def _drop_table(autogen_context: AutogenContext, op: ops.DropTableOp) -> str:
304
304
305
305
306
306
def _render_dialect_kwargs_items (
307
- autogen_context : AutogenContext , item : DialectKWArgs
307
+ autogen_context : AutogenContext , dialect_kwargs : _DialectArgView
308
308
) -> list [str ]:
309
309
return [
310
310
f"{ key } ={ _render_potential_expr (val , autogen_context )} "
311
- for key , val in item . dialect_kwargs .items ()
311
+ for key , val in dialect_kwargs .items ()
312
312
]
313
313
314
314
@@ -331,7 +331,7 @@ def _add_index(autogen_context: AutogenContext, op: ops.CreateIndexOp) -> str:
331
331
332
332
assert index .table is not None
333
333
334
- opts = _render_dialect_kwargs_items (autogen_context , index )
334
+ opts = _render_dialect_kwargs_items (autogen_context , index . dialect_kwargs )
335
335
if op .if_not_exists is not None :
336
336
opts .append ("if_not_exists=%r" % bool (op .if_not_exists ))
337
337
text = tmpl % {
@@ -365,7 +365,7 @@ def _drop_index(autogen_context: AutogenContext, op: ops.DropIndexOp) -> str:
365
365
"%(prefix)sdrop_index(%(name)r, "
366
366
"table_name=%(table_name)r%(schema)s%(kwargs)s)"
367
367
)
368
- opts = _render_dialect_kwargs_items (autogen_context , index )
368
+ opts = _render_dialect_kwargs_items (autogen_context , index . dialect_kwargs )
369
369
if op .if_exists is not None :
370
370
opts .append ("if_exists=%r" % bool (op .if_exists ))
371
371
text = tmpl % {
@@ -389,6 +389,7 @@ def _add_unique_constraint(
389
389
def _add_fk_constraint (
390
390
autogen_context : AutogenContext , op : ops .CreateForeignKeyOp
391
391
) -> str :
392
+ constraint = op .to_constraint ()
392
393
args = [repr (_render_gen_name (autogen_context , op .constraint_name ))]
393
394
if not autogen_context ._has_batch :
394
395
args .append (repr (_ident (op .source_table )))
@@ -418,9 +419,16 @@ def _add_fk_constraint(
418
419
if value is not None :
419
420
args .append ("%s=%r" % (k , value ))
420
421
421
- return "%(prefix)screate_foreign_key(%(args)s)" % {
422
+ dialect_kwargs = _render_dialect_kwargs_items (
423
+ autogen_context , constraint .dialect_kwargs
424
+ )
425
+
426
+ return "%(prefix)screate_foreign_key(%(args)s%(dialect_kwargs)s)" % {
422
427
"prefix" : _alembic_autogenerate_prefix (autogen_context ),
423
428
"args" : ", " .join (args ),
429
+ "dialect_kwargs" : (
430
+ ", " + ", " .join (dialect_kwargs ) if dialect_kwargs else ""
431
+ ),
424
432
}
425
433
426
434
@@ -664,7 +672,9 @@ def _uq_constraint(
664
672
opts .append (
665
673
("name" , _render_gen_name (autogen_context , constraint .name ))
666
674
)
667
- dialect_options = _render_dialect_kwargs_items (autogen_context , constraint )
675
+ dialect_options = _render_dialect_kwargs_items (
676
+ autogen_context , constraint .dialect_kwargs
677
+ )
668
678
669
679
if alter :
670
680
args = [repr (_render_gen_name (autogen_context , constraint .name ))]
0 commit comments