dotorm
Advanced tools
@@ -49,3 +49,3 @@ """ | ||
| __version__ = "2.0.0" | ||
| __version__ = "2.0.5ы" | ||
@@ -52,0 +52,0 @@ __all__ = [ |
@@ -116,2 +116,4 @@ """DDL Mixin - provides table creation functionality.""" | ||
| many2many_fields_fk: list[str] = [] | ||
| # запросы на создание индексов | ||
| index_statements: list[str] = [] | ||
@@ -148,2 +150,9 @@ # Проходимся по атрибутам класса и извлекаем информацию о полях. | ||
| # создание индекса для поля с index=True | ||
| if field.index and not field.primary_key and not field.unique: | ||
| index_name = f"idx_{cls.__table__}_{field_name}" | ||
| index_statements.append( | ||
| f'CREATE INDEX IF NOT EXISTS "{index_name}" ON {cls.__table__} ("{field_name}")' | ||
| ) | ||
| field_declaration_str = " ".join(field_declaration) | ||
@@ -157,5 +166,2 @@ fields_created_declaration.append(field_declaration_str) | ||
| column2 = f'"{field.column2}" INTEGER NOT NULL' | ||
| # COMMENT ON TABLE {field.many2many_table} IS f"RELATION BETWEEN {model._table} AND {comodel._table}"; | ||
| # CREATE INDEX ON {field.many2many_table} ({field.column1}, {field.column2}); | ||
| # PRIMARY KEY({field.column1}, {field.column2}) | ||
| create_table_sql = f"""\ | ||
@@ -174,2 +180,8 @@ CREATE TABLE IF NOT EXISTS {field.many2many_table} (\ | ||
| # создание составного индекса для m2m таблицы | ||
| m2m_index_name = f"idx_{field.many2many_table}_{field.column1}_{field.column2}" | ||
| index_statements.append( | ||
| f'CREATE INDEX IF NOT EXISTS "{m2m_index_name}" ON {field.many2many_table} ("{field.column1}", "{field.column2}")' | ||
| ) | ||
| # Создаём SQL-запрос для создания таблицы с определёнными полями. | ||
@@ -183,2 +195,3 @@ create_table_sql = f"""\ | ||
| await session.execute(create_table_sql) | ||
| # если таблицы уже были созданы, но появились новые поля | ||
@@ -195,2 +208,7 @@ # необходимо их добавить | ||
| ) | ||
| # создаём индексы | ||
| for index_stmt in index_statements: | ||
| await session.execute(index_stmt) | ||
| return many2one_fields_fk + many2many_fields_fk | ||
@@ -197,0 +215,0 @@ |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: dotorm | ||
| Version: 2.0.0 | ||
| Version: 2.0.5 | ||
| Summary: Async Python ORM for PostgreSQL, MySQL and ClickHouse with dot-notation access | ||
@@ -5,0 +5,0 @@ Project-URL: Homepage, https://github.com/shurshilov/dotorm |
+1
-1
@@ -7,3 +7,3 @@ [build-system] | ||
| name = "dotorm" | ||
| version = "2.0.0" | ||
| version = "2.0.5" | ||
| description = "Async Python ORM for PostgreSQL, MySQL and ClickHouse with dot-notation access" | ||
@@ -10,0 +10,0 @@ readme = "README.md" |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
261960
0.3%3682
0.35%