test_db.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """Test DB connection: create tables, insert a user, and query it.
  2. This script reads DATABASE_URL from environment (or uses app.core.db defaults).
  3. Run locally with e.g. (PowerShell):
  4. $env:DATABASE_URL = "mysql+pymysql://root:%40%40qinys12346..@192.168.1.177:3306/wishing_tree?charset=utf8mb4&serverTimezone=Asia/Shanghai"
  5. python scripts/test_db.py
  6. """
  7. import os
  8. import sys
  9. try:
  10. from app.core.db import engine, SessionLocal, Base
  11. except Exception as e:
  12. print("Failed to import database module:", e)
  13. raise
  14. # Import models so they are registered with Base
  15. try:
  16. import app.models.user as user_model
  17. except Exception as e:
  18. print("Failed to import models:", e)
  19. raise
  20. from app.models.user import User
  21. def main():
  22. print("Engine URL:", str(engine.url))
  23. try:
  24. print("Creating tables...")
  25. Base.metadata.create_all(bind=engine)
  26. except Exception as e:
  27. print("Create tables failed:", e)
  28. sys.exit(2)
  29. db = SessionLocal()
  30. try:
  31. # Insert a test user (avoid duplicate unique constraint)
  32. existing = db.query(User).filter(User.username == "test_user").first()
  33. if existing:
  34. print("Test user already exists:", existing)
  35. else:
  36. u = User(username="test_user", mobile="18888888888", email="test@example.com")
  37. db.add(u)
  38. db.commit()
  39. db.refresh(u)
  40. print("Inserted user:", u)
  41. # Query back
  42. one = db.query(User).filter(User.username == "test_user").first()
  43. print("Queried user:", one)
  44. except Exception as e:
  45. print("DB operation failed:", e)
  46. raise
  47. finally:
  48. db.close()
  49. if __name__ == "__main__":
  50. main()