| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import logging
- import psycopg
- from django.db import migrations
- from maxkb.const import CONFIG
- def get_connect(db_name):
- conn_params = {
- "dbname": db_name,
- "user": CONFIG.get('DB_USER'),
- "password": CONFIG.get('DB_PASSWORD'),
- "host": CONFIG.get('DB_HOST'),
- "port": CONFIG.get('DB_PORT')
- }
- # 建立连接
- connect = psycopg.connect(**conn_params)
- return connect
- def sql_execute(conn, reindex_sql: str, alter_database_sql: str):
- """
- 执行一条sql
- @param reindex_sql:
- @param conn:
- @param alter_database_sql:
- """
- conn.autocommit = True
- with conn.cursor() as cursor:
- cursor.execute(reindex_sql, [])
- cursor.execute(alter_database_sql, [])
- cursor.close()
- def re_index(apps, schema_editor):
- app_db_name = CONFIG.get('DB_NAME')
- try:
- re_index_database(app_db_name)
- except Exception as e:
- logging.error(f'reindex database {app_db_name}发送错误:{str(e)}')
- try:
- re_index_database('root')
- except Exception as e:
- logging.error(f'reindex database root 发送错误:{str(e)}')
- def re_index_database(db_name):
- db_conn = get_connect(db_name)
- sql_execute(db_conn, f'REINDEX DATABASE "{db_name}";', f'ALTER DATABASE "{db_name}" REFRESH COLLATION VERSION;')
- db_conn.close()
- class Migration(migrations.Migration):
- dependencies = [
- ("system_manage", "0001_initial"),
- ]
- operations = [
- migrations.RunPython(re_index, atomic=False)
- ]
|