model.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """Database built into Pynecone."""
  2. import sqlmodel
  3. from pynecone import utils
  4. from pynecone.base import Base
  5. def get_engine():
  6. """Get the database engine.
  7. Returns:
  8. The database engine.
  9. """
  10. url = utils.get_config().db_url
  11. return sqlmodel.create_engine(url, echo=False)
  12. class Model(Base, sqlmodel.SQLModel):
  13. """Base class to define a table in the database."""
  14. # The primary key for the table.
  15. id: int = sqlmodel.Field(primary_key=True)
  16. @staticmethod
  17. def create_all():
  18. """Create all the tables."""
  19. engine = get_engine()
  20. sqlmodel.SQLModel.metadata.create_all(engine)
  21. @classmethod
  22. @property
  23. def select(cls):
  24. """Select rows from the table.
  25. Returns:
  26. The select statement.
  27. """
  28. return sqlmodel.select(cls)
  29. def session(url=None):
  30. """Get a session to interact with the database.
  31. Args:
  32. url: The database url.
  33. Returns:
  34. A database session.
  35. """
  36. if url is not None:
  37. return sqlmodel.Session(sqlmodel.create_engine(url))
  38. engine = get_engine()
  39. return sqlmodel.Session(engine)