|
8 | 8 | from sqlalchemy.engine.interfaces import Dialect, ExecutionContext |
9 | 9 | from sqlalchemy.engine.result import ResultMetaData, RowProxy |
10 | 10 | from sqlalchemy.sql import ClauseElement |
| 11 | +from sqlalchemy.sql.ddl import DDLElement |
11 | 12 | from sqlalchemy.types import TypeEngine |
12 | 13 |
|
13 | 14 | from databases.core import LOG_EXTRA, DatabaseURL |
@@ -171,18 +172,23 @@ def _compile( |
171 | 172 | self, query: ClauseElement |
172 | 173 | ) -> typing.Tuple[str, dict, CompilationContext]: |
173 | 174 | compiled = query.compile(dialect=self._dialect) |
174 | | - args = compiled.construct_params() |
175 | | - for key, val in args.items(): |
176 | | - if key in compiled._bind_processors: |
177 | | - args[key] = compiled._bind_processors[key](val) |
178 | 175 |
|
179 | 176 | execution_context = self._dialect.execution_ctx_cls() |
180 | 177 | execution_context.dialect = self._dialect |
181 | | - execution_context.result_column_struct = ( |
182 | | - compiled._result_columns, |
183 | | - compiled._ordered_columns, |
184 | | - compiled._textual_ordered_columns, |
185 | | - ) |
| 178 | + |
| 179 | + if not isinstance(query, DDLElement): |
| 180 | + args = compiled.construct_params() |
| 181 | + for key, val in args.items(): |
| 182 | + if key in compiled._bind_processors: |
| 183 | + args[key] = compiled._bind_processors[key](val) |
| 184 | + |
| 185 | + execution_context.result_column_struct = ( |
| 186 | + compiled._result_columns, |
| 187 | + compiled._ordered_columns, |
| 188 | + compiled._textual_ordered_columns, |
| 189 | + ) |
| 190 | + else: |
| 191 | + args = {} |
186 | 192 |
|
187 | 193 | query_message = compiled.string.replace(" \n", " ").replace("\n", " ") |
188 | 194 | logger.debug("Query: %s Args: %s", query_message, repr(args), extra=LOG_EXTRA) |
|
0 commit comments