""" 轻量建表脚本:创建 `aigcspace.invoice_info_history` 表 使用项目的数据库连接配置(app.database.get_engine / Session)执行建表 SQL。 运行方式(在 backend 目录下或将工作目录设置为项目根): python -m scripts.create_invoice_history_table 该脚本仅执行一次建表(使用 IF NOT EXISTS),适用于没有 Alembic 的快速部署场景。 """ import sys from pathlib import Path # Ensure package imports work when running script from project root or other cwd. # Insert the `backend` directory to sys.path so `import app` resolves. sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from sqlalchemy import text from app.database import engine as db_engine SQL = r""" CREATE SCHEMA IF NOT EXISTS aigcspace; CREATE TABLE IF NOT EXISTS aigcspace.invoice_info_history ( id BIGSERIAL PRIMARY KEY, user_id VARCHAR(50) NOT NULL REFERENCES aigcspace.users(id) ON DELETE CASCADE, company_name VARCHAR(200) NOT NULL, tax_number VARCHAR(100), invoice_type VARCHAR(50), address VARCHAR(300), phone VARCHAR(50), register_address VARCHAR(300), register_phone VARCHAR(50), bank VARCHAR(200), bank_account VARCHAR(100), email VARCHAR(200), receiver_name VARCHAR(100), receiver_mobile VARCHAR(50), receiver_address VARCHAR(300), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_invoice_info_history_user ON aigcspace.invoice_info_history(user_id); """ def main(): engine = db_engine with engine.connect() as conn: print("Creating table aigcspace.invoice_info_history (if not exists)...") conn.execute(text(SQL)) conn.commit() print("Done.") if __name__ == '__main__': main()