MrShandy

database code

Feb 4th, 2022 (edited)
1,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. import configparser
  2. import logging
  3.  
  4. from sqlalchemy import create_engine
  5. from sqlalchemy.exc import DatabaseError
  6. from sqlalchemy.orm import Session
  7.  
  8. config = configparser.ConfigParser()
  9. config.read("config.ini", encoding='utf-8')
  10.  
  11. logger = logging.getLogger("main")
  12.  
  13. USERNAME = config["DB"]["login"]
  14. PASSWORD = config["DB"]["password"]
  15. HOST = config["DB"]["server"]
  16. PORT = config["DB"].getint("port")
  17. DATABASE = config["DB"]["database"]
  18.  
  19. engine = create_engine(f"mysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}", pool_pre_ping=True, pool_recycle=3600)
  20.  
  21. session = Session(bind=engine)
  22.  
  23.  
  24. def run_stored_procedure(name: str):
  25.     logger.debug(f"A stored procedure {name} has been started")
  26.     try:
  27.         data = session.execute(f"CALL {name}").one()
  28.         return data
  29.     except DatabaseError as e:
  30.         logger.error(f"Stored procedure run error {e}")
  31.  
  32.  
  33. def select_all(model: object, params: tuple = None):
  34.     logger.debug(f"SELECT one {model} with params {params}")
  35.     query = session.query(model)
  36.     if params is not None:
  37.         query = query.filter(params)
  38.     return query
  39.  
  40.  
  41. def select_one(model: object, id: int):
  42.     logger.debug(f"SELECT one {model} with key {id}")
  43.     data = session.query(model).get(id)
  44.     return data
  45.  
  46.  
  47. def insert(data: object):
  48.     logger.debug(f"UPDATE {data}")
  49.     session.add(data)
  50.     try:
  51.         session.commit()
  52.     except DatabaseError as e:
  53.         session.rollback()
  54.         logger.error(f"INSERT error {e}")
  55.  
  56.  
  57. def update(data: object):
  58.     logger.debug(f"UPDATE {data}")
  59.     session.add(data)
  60.     try:
  61.         session.commit()
  62.     except DatabaseError as e:
  63.         session.rollback()
  64.         logger.error(f"UPDATE error {e}")
  65.  
  66.  
  67. def ping():
  68.     session.execute("SELECT 1")
  69.  
Add Comment
Please, Sign In to add comment