From 3f96c9c6502243b06efd4bb34a189e72e3a5557c Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 19:24:55 +0800
Subject: [PATCH] 复制项目
---
backend/scripts/import_local.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/backend/scripts/import_local.py b/backend/scripts/import_local.py
new file mode 100644
index 0000000..51de670
--- /dev/null
+++ b/backend/scripts/import_local.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+"""Import SQL from a directory (dev). Usage: python scripts/import_local.py <dir> <subject_name>"""
+import sys
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+import io
+import zipfile
+
+from app.database import SessionLocal
+from app.import_service import load_dir_sql, run_import
+from app.models import User
+
+
+def dir_to_zip_bytes(dir_path: Path) -> bytes:
+ buf = io.BytesIO()
+ with zipfile.ZipFile(buf, "w", zipfile.ZIP_DEFLATED) as zf:
+ for name, data in load_dir_sql(dir_path).items():
+ zf.writestr(Path(name).name, data)
+ return buf.getvalue()
+
+
+def main():
+ if len(sys.argv) < 3:
+ print("Usage: import_local.py <sql_dir> <subject_name>")
+ sys.exit(1)
+ dir_path = Path(sys.argv[1])
+ subject = sys.argv[2]
+ db = SessionLocal()
+ user = db.query(User).filter(User.username == "admin").first()
+ uid = user.id if user else None
+ result = run_import(
+ db,
+ subject_name=subject,
+ zip_filename=dir_path.name + ".zip",
+ file_bytes=dir_to_zip_bytes(dir_path),
+ user_id=uid,
+ )
+ print(result)
+
+
+if __name__ == "__main__":
+ main()
--
Gitblit v1.8.0