No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sqlobject.py 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import logging as logger
  4. import sqlalchemy as sql
  5. from Database.sqlwrapper import SqlWrapper
  6. class SqlObject(object):
  7. """ Object that make aliases with sqlalchemy
  8. Example usage of object that inherite from SqlObject :
  9. class foo(SlqObject,...):
  10. def __init__(self, ...):
  11. self.__class__.tname = 'foo_table'
  12. f = foo(...)
  13. req = f.where(f.col.id == 42)
  14. res = f.rexec(req)
  15. e = bar(...)
  16. req = f.join(e.col.id == f.col.id)
  17. res = f.rexec(req)
  18. """
  19. def __init__(self, tname):
  20. self.tname = tname
  21. @property
  22. def table(self):
  23. return sql.Table(self.tname, sql.MetaData())
  24. @property
  25. def col(self):
  26. return self.table.c
  27. @property
  28. def sel(self):
  29. return sql.select(self.table)
  30. @property
  31. def where(self):
  32. return self.sel.where
  33. @property
  34. def join(self):
  35. return self.sel.join
  36. @property
  37. def rconn(self):
  38. return SqlWrapper.rconn()
  39. @property
  40. def wconn(self):
  41. return SqlWrapper.wconn()
  42. def sFetchAll(self, sel):
  43. return self.rexec(sel).fetchall()
  44. def rexec(self, o):
  45. return self.rconn.execute(o)
  46. def wexec(self, o):
  47. return self.wconn.execute(o)