@@ -154,17 +154,14 @@ def table_exists(self) -> bool:
154
154
exists_query = text (
155
155
"SELECT 1 FROM information_schema.tables WHERE table_schema = :schema AND table_name = :table"
156
156
)
157
- exists = sess .execute (
158
- exists_query , {"schema" : self .schema , "table" : self .table_name }
159
- ).scalar () is not None
160
- else :
161
- exists_query = text (
162
- "SELECT 1 FROM information_schema.tables WHERE table_name = :table"
157
+ exists = (
158
+ sess .execute (exists_query , {"schema" : self .schema , "table" : self .table_name }).scalar ()
159
+ is not None
163
160
)
164
- exists = sess . execute (
165
- exists_query , { "table" : self . table_name }
166
- ).scalar () is not None
167
-
161
+ else :
162
+ exists_query = text ( "SELECT 1 FROM information_schema.tables WHERE table_name = :table" )
163
+ exists = sess . execute ( exists_query , { "table" : self . table_name } ).scalar () is not None
164
+
168
165
logger .debug (f"Table '{ self .table .fullname } ' does { 'not' if not exists else '' } exist" )
169
166
return exists
170
167
@@ -176,7 +173,7 @@ def create(self) -> None:
176
173
"""
177
174
Create the table if it does not exist.
178
175
"""
179
- self .table : Table = self .get_table ()
176
+ self .table = self .get_table ()
180
177
if not self .table_exists ():
181
178
try :
182
179
with self .Session () as sess , sess .begin ():
@@ -185,48 +182,45 @@ def create(self) -> None:
185
182
sess .execute (text (f"CREATE SCHEMA IF NOT EXISTS { self .schema } ;" ))
186
183
187
184
logger .debug (f"Creating table: { self .table_name } " )
188
-
185
+
189
186
# First create the table without indexes
190
187
table_without_indexes = Table (
191
188
self .table_name ,
192
189
MetaData (schema = self .schema ),
193
190
* [c .copy () for c in self .table .columns ],
194
- schema = self .schema
191
+ schema = self .schema ,
195
192
)
196
193
table_without_indexes .create (self .db_engine , checkfirst = True )
197
-
194
+
198
195
# Then create each index individually with error handling
199
196
for idx in self .table .indexes :
200
197
try :
201
198
idx_name = idx .name
202
199
logger .debug (f"Creating index: { idx_name } " )
203
-
200
+
204
201
# Check if index already exists
205
202
with self .Session () as sess :
206
203
if self .schema :
207
204
exists_query = text (
208
205
"SELECT 1 FROM pg_indexes WHERE schemaname = :schema AND indexname = :index_name"
209
206
)
210
- exists = sess .execute (
211
- exists_query , {"schema" : self .schema , "index_name" : idx_name }
212
- ).scalar () is not None
213
- else :
214
- exists_query = text (
215
- "SELECT 1 FROM pg_indexes WHERE indexname = :index_name"
207
+ exists = (
208
+ sess .execute (exists_query , {"schema" : self .schema , "index_name" : idx_name }).scalar ()
209
+ is not None
216
210
)
217
- exists = sess . execute (
218
- exists_query , { " index_name": idx_name }
219
- ).scalar () is not None
220
-
211
+ else :
212
+ exists_query = text ( "SELECT 1 FROM pg_indexes WHERE indexname = : index_name")
213
+ exists = sess . execute ( exists_query , { "index_name" : idx_name } ).scalar () is not None
214
+
221
215
if not exists :
222
216
idx .create (self .db_engine )
223
217
else :
224
218
logger .debug (f"Index { idx_name } already exists, skipping creation" )
225
-
219
+
226
220
except Exception as e :
227
221
# Log the error but continue with other indexes
228
222
logger .warning (f"Error creating index { idx .name } : { e } " )
229
-
223
+
230
224
except Exception as e :
231
225
logger .error (f"Could not create table: '{ self .table .fullname } ': { e } " )
232
226
raise
0 commit comments