def sql_db_connect(): """Connection to DB """ try: uri_params = config.get_sql_db_uri_params() # TODO args* style argument SQLDatabase.connect(uri_params[0], uri_params[1], uri_params[2], uri_params[3], uri_params[4], uri_params[5], debug=config.sql_debug_enabled()) except Exception as e: log.exception(e) msg = "SQL: can't connect" raise IrmaDatabaseError(msg)
if not os.path.exists(dirname): print("SQL directory does not exist {0}" "..creating".format(dirname)) os.makedirs(dirname) os.chmod(dirname, 0o777) elif not (os.path.isdir(dirname)): print("Error. SQL directory is a not a dir {0}" "".format(dirname)) raise IrmaDatabaseError("Can not create Brain database dir") if not os.path.exists(db_name): # touch like method to create a rw-rw-rw- file for db open(db_name, 'a').close() os.chmod(db_name, 0o666) # Retrieve database informations url = config.get_sql_url() engine = create_engine(url, echo=config.sql_debug_enabled()) # and create Database in case Base.metadata.create_all(engine) with session_transaction() as session: try: user = User.get_by_rmqvhost(session, rmqvhost=rmqvhost) print("rmqvhost {0} is already assigned to user {1}. " "Updating with new parameters.".format(user.name, user.rmqvhost)) user = user.load(user.id, session) user.name = name user.ftpuser = ftpuser user.update(['name', 'ftpuser'], session) except IrmaDatabaseResultNotFound: user = User(name=name, rmqvhost=rmqvhost, ftpuser=ftpuser) user.save(session)
from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from irma.common.utils import sql import config.parser as config engine = create_engine(config.sqldb.url, echo=config.sql_debug_enabled()) session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) def session_transaction(): return sql.transaction(session) def session_query(): return sql.query(session)