| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """
- 轻量建表脚本:创建 `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()
|