| 452 | LOG.debug('Created table %s', table.name) |
| 453 | |
| 454 | def make_create_table_sql(self, table): |
| 455 | column_declarations = [] |
| 456 | primary_key_names = [] |
| 457 | for col in table.cols: |
| 458 | if col.is_primary_key: |
| 459 | null_constraint = '' |
| 460 | primary_key_names.append(col.name) |
| 461 | elif self.conn.data_types_are_implictly_nullable: |
| 462 | null_constraint = '' |
| 463 | else: |
| 464 | null_constraint = ' NULL' |
| 465 | column_declaration = '{name} {col_type}{null_constraint}'.format( |
| 466 | name=col.name, col_type=self.get_sql_for_data_type(col.exact_type), |
| 467 | null_constraint=null_constraint) |
| 468 | column_declarations.append(column_declaration) |
| 469 | |
| 470 | if primary_key_names: |
| 471 | primary_key_constraint = ', PRIMARY KEY ({keys})'.format( |
| 472 | keys=', '.join(primary_key_names)) |
| 473 | else: |
| 474 | primary_key_constraint = '' |
| 475 | |
| 476 | create_table = ('CREATE TABLE {table_name} (' |
| 477 | '{all_columns}' |
| 478 | '{primary_key_constraint}' |
| 479 | ')'.format( |
| 480 | table_name=table.name, all_columns=', '.join(column_declarations), |
| 481 | primary_key_constraint=primary_key_constraint)) |
| 482 | return create_table |
| 483 | |
| 484 | def get_sql_for_data_type(self, data_type): |
| 485 | if issubclass(data_type, VarChar): |