NAC_Blockchain/gnacs-service/database.py

50 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from motor.motor_asyncio import AsyncIOMotorClient
from pymongo import MongoClient
from datetime import datetime, timezone
MONGO_URI = "mongodb://gnacs_user:GnacsDB2026!@127.0.0.1:27017/gnacs_db?authSource=admin"
MONGO_DB = "gnacs_db"
def now_utc():
return datetime.now(timezone.utc)
# 异步客户端FastAPI使用
motor_client = None
db = None
# 集合变量在startup事件中初始化
asset_classes_col = None
jurisdictions_col = None
jurisdiction_col = None # 别名,兼容旧代码
compliance_rules_col = None
tax_treaties_col = None
gnacs_codes_col = None
async def connect_db():
global motor_client, db
global asset_classes_col, jurisdictions_col, jurisdiction_col
global compliance_rules_col, tax_treaties_col, gnacs_codes_col
motor_client = AsyncIOMotorClient(MONGO_URI)
db = motor_client[MONGO_DB]
await db.command("ping")
asset_classes_col = db["asset_classes"]
jurisdictions_col = db["jurisdictions"]
jurisdiction_col = db["jurisdictions"] # 别名
compliance_rules_col = db["compliance_rules"]
tax_treaties_col = db["tax_treaties"]
gnacs_codes_col = db["gnacs_codes"]
print(f"GNACS MongoDB connected: {MONGO_DB}")
return db
async def close_db():
global motor_client
if motor_client:
motor_client.close()
def get_db():
return db
def get_sync_db():
sync_client = MongoClient(MONGO_URI)
return sync_client[MONGO_DB]