customs-data / init_db.py
3v324v23's picture
feat: 完成多国家海关数据源接入与核心功能全量迭代
8ca8917
Raw
History Blame Contribute Delete
1.34 kB
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine
from packages.core.config import settings
from packages.core.models import Base
from packages.core.olap import init_clickhouse_schema
from packages.core.search import init_es_schema
async def init_models():
print("Initializing PostgreSQL schema...")
# 使用 PostgreSQL DSN
engine = create_async_engine(settings.DATABASE_URL, echo=True)
# 因为有 PostGIS 扩展依赖,最好确保扩展已被创建
# 正常 postgis image 默认在 public 下已有 postgis
async with engine.begin() as conn:
# 删除所有旧表(如果是全新项目,这里清理掉之前海关项目的旧表)
await conn.run_sync(Base.metadata.drop_all)
# 创建所有新表
await conn.run_sync(Base.metadata.create_all)
print("数据库表结构初始化成功!")
print("Initializing ClickHouse schema...")
try:
init_clickhouse_schema()
except Exception as e:
print(f"ClickHouse init failed (is it running?): {e}")
print("Initializing Elasticsearch schema...")
try:
await init_es_schema()
except Exception as e:
print(f"Elasticsearch init failed (is it running?): {e}")
if __name__ == "__main__":
asyncio.run(init_models())