rd_some_class_insert.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/usr/bin/env python3
  2. import datetime
  3. from pathlib import Path
  4. from sqlalchemy import Column, Integer, String
  5. from sqlalchemy import create_engine
  6. from sqlalchemy.ext.declarative import declarative_base
  7. from sqlalchemy.orm import scoped_session, sessionmaker
  8. Base = declarative_base()
  9. class SomeClass(Base):
  10. __tablename__ = "some_table"
  11. id = Column(Integer, primary_key=True)
  12. name = Column(String(50))
  13. def get_connection_string():
  14. return f"sqlite:///{Path().home()}/.peers_identity/rd_some_class.db"
  15. def insert_record():
  16. connection_string = get_connection_string()
  17. engine = create_engine(connection_string)
  18. # connection = engine.connect()
  19. session = scoped_session(
  20. sessionmaker(autocommit=False, autoflush=False, bind=engine)
  21. )
  22. Base.metadata.create_all(engine)
  23. foo = SomeClass(name=f"foo_{datetime.datetime.now()}")
  24. session.add(foo)
  25. session.commit()
  26. result = session.query(SomeClass).get({"id": "1"})
  27. print(result.name)
  28. some_class = session.query(SomeClass).all()
  29. for foo in some_class:
  30. print(foo.name)
  31. session.close()
  32. def drop_table():
  33. connection_string = get_connection_string()
  34. engine = create_engine(connection_string)
  35. # connection = engine.connect()
  36. session = scoped_session(
  37. sessionmaker(autocommit=False, autoflush=False, bind=engine)
  38. )
  39. # Base.metadata.drop_all(bind=engine, tables=[SomeClass.__table__])
  40. Base.metadata.drop_all(bind=engine)
  41. session.close()
  42. if __name__ == "__main__":
  43. from argparse import ArgumentParser
  44. from pathlib import Path
  45. argument_parser = ArgumentParser(description="Test the database connection.")
  46. argument_parser.add_argument(
  47. "-d", "--drop", help="Drop the test table", required=False
  48. )
  49. args = argument_parser.parse_args()
  50. if args.drop == "True":
  51. drop_table()
  52. else:
  53. insert_record()