def create_engine_from_conf(config_file): seaf_conf = ConfigParser.ConfigParser() seaf_conf.read(config_file) backend = seaf_conf.get('database', 'type') if backend == 'mysql': db_server = 'localhost' db_port = 3306 if seaf_conf.has_option('database', 'host'): db_server = seaf_conf.get('database', 'host') if seaf_conf.has_option('database', 'port'): db_port = seaf_conf.getint('database', 'port') db_username = seaf_conf.get('database', 'user') db_passwd = seaf_conf.get('database', 'password') db_name = seaf_conf.get('database', 'db_name') db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % \ (db_username, quote_plus(db_passwd), db_server, db_port, db_name) else: raise RuntimeError("Unknown Database backend: %s" % backend) kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine
def create_seahub_db_engine(): import seahub_settings db_infos = seahub_settings.DATABASES['default'] #import local_settings #db_infos = local_settings.DATABASES['default'] if db_infos.get('ENGINE') != 'django.db.backends.mysql': _logger.warning('Failed to init seahub db, only mysql db supported.') return db_host = db_infos.get('HOST', '127.0.0.1') db_port = int(db_infos.get('PORT', '3306')) db_name = db_infos.get('NAME') if not db_name: _logger.warning ('Failed to init seahub db, db name is not set.') return db_user = db_infos.get('USER') if not db_user: _logger.warning ('Failed to init seahub db, db user is not set.') return db_passwd = db_infos.get('PASSWORD') db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % (db_user, quote_plus(db_passwd), db_host, db_port, db_name) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine
def create_mysql_session(host, port, username, passwd, dbname): db_url = "mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8" % ( username, quote_plus(passwd), host, port, dbname) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) Session = sessionmaker(bind=engine) return Session
def get_db_session(section): config = ConfigParser.ConfigParser() config.read('./db.cnf') if not config.has_section(section): sys.stdout.write("no section: %s" % section) return host, port, username, passwd, dbname = read_db_conf(section) db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % (username, quote_plus(passwd), host, port, dbname) global SEAHUB_DBNAME, SEAFEVENTS_DBNAME, TEST_DBNAME if section == 'TESTDB': TEST_DBNAME = dbname elif section == 'SEAFEVENTSDB': SEAFEVENTS_DBNAME = dbname elif section == 'SEAHUBDB': SEAHUB_DBNAME = dbname kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if not has_event_listener(Pool, 'checkout', ping_connection): add_event_listener(Pool, 'checkout', ping_connection) Session = sessionmaker(bind=engine) return Session()
def create_db_session(host, port, username, passwd, dbname): db_url = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format( username, quote_plus(passwd), host, port, dbname) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) # create tables, if not exist if dbname == DATABASES['keeper']['NAME']: KeeperBase.metadata.create_all(engine, tables=[ KeeperArchive.__table__, KeeperArchiveOwnerQuota.__table__ ]) if not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return scoped_session( sessionmaker(bind=engine, autocommit=False, expire_on_commit=False))
def create_seahub_db_engine(): import seahub_settings db_infos = seahub_settings.DATABASES['default'] #import local_settings #db_infos = local_settings.DATABASES['default'] if db_infos.get('ENGINE') != 'django.db.backends.mysql': logging.warning('Failed to init seahub db, only mysql db supported.') return db_host = db_infos.get('HOST', '127.0.0.1') db_port = int(db_infos.get('PORT', '3306')) db_name = db_infos.get('NAME') if not db_name: logging.warning('Failed to init seahub db, db name is not set.') return db_user = db_infos.get('USER') if not db_user: logging.warning('Failed to init seahub db, db user is not set.') return db_passwd = db_infos.get('PASSWORD') db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % ( db_user, quote_plus(db_passwd), db_host, db_port, db_name) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine
def create_engine_from_conf(config_file, db='seafevent'): config = configparser.ConfigParser() config.read(config_file) need_connection_pool_fix = True db_sec = 'DATABASE' user = '******' db_name = 'name' if db == 'seafile': db_sec = 'database' user = '******' db_name = 'db_name' backend = config.get(db_sec, 'type') if backend == 'sqlite' or backend == 'sqlite3': path = config.get(db_sec, 'path') if not os.path.isabs(path): path = os.path.join(os.path.dirname(config_file), path) db_url = "sqlite:///%s" % path logger.info('[seafevents] database: sqlite3, path: %s', path) need_connection_pool_fix = False elif backend == 'mysql': if config.has_option(db_sec, 'host'): host = config.get(db_sec, 'host').lower() else: host = 'localhost' if config.has_option(db_sec, 'port'): port = config.getint(db_sec, 'port') else: port = 3306 username = config.get(db_sec, user) passwd = config.get(db_sec, 'password') dbname = config.get(db_sec, db_name) db_url = "mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8" % ( username, quote_plus(passwd), host, port, dbname) logger.info('[seafevents] database: mysql, name: %s', dbname) elif backend == 'oracle': if config.has_option(db_sec, 'host'): host = config.get(db_sec, 'host').lower() else: host = 'localhost' if config.has_option(db_sec, 'port'): port = config.getint(db_sec, 'port') else: port = 1521 username = config.get(db_sec, user) passwd = config.get(db_sec, 'password') service_name = config.get(db_sec, 'service_name') db_url = "oracle://%s:%s@%s:%s/%s" % (username, quote_plus(passwd), host, port, service_name) logger.info('[seafevents] database: oracle, service_name: %s', service_name) else: logger.error("Unknown database backend: %s" % backend) raise RuntimeError("Unknown database backend: %s" % backend) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if need_connection_pool_fix and not has_event_listener( Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine
def create_engine_from_conf(config): need_connection_pool_fix = True if not config.has_section('database'): seafile_data_dir = os.environ['SEAFILE_CONF_DIR'] if seafile_data_dir: path = os.path.join(seafile_data_dir, 'seafile.db') else: logging.warning( 'SEAFILE_CONF_DIR not set, can not load sqlite database.') return None db_url = "sqlite:///%s" % path logging.info('[seafobj] database: sqlite3, path: %s', path) need_connection_pool_fix = False else: backend = config.get('database', 'type') if backend == 'mysql': if config.has_option('database', 'host'): host = config.get('database', 'host').lower() else: host = 'localhost' if config.has_option('database', 'port'): port = config.getint('database', 'port') else: port = 3306 username = config.get('database', 'user') passwd = config.get('database', 'password') dbname = config.get('database', 'db_name') db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % ( username, quote_plus(passwd), host, port, dbname) logging.warning('[seafobj] database: mysql, name: %s', dbname) elif backend == 'oracle': if config.has_option('database', 'host'): host = config.get('database', 'host').lower() else: host = 'localhost' if config.has_option('database', 'port'): port = config.getint('database', 'port') else: port = 1521 username = config.get('database', 'username') passwd = config.get('database', 'password') service_name = config.get('database', 'service_name') db_url = "oracle://%s:%s@%s:%s/%s" % (username, quote_plus(passwd), host, port, service_name) logging.info('[seafobj] database: oracle, service_name: %s', service_name) else: raise RuntimeError("Unknown database backend: %s" % backend) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if need_connection_pool_fix and not has_event_listener( Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine
def create_engine_from_conf(config): need_connection_pool_fix = True if not config.has_section('database'): seafile_data_dir = os.environ['SEAFILE_CONF_DIR'] if seafile_data_dir: path = os.path.join(seafile_data_dir, 'seafile.db') else: logging.warning('SEAFILE_CONF_DIR not set, can not load sqlite database.') return None db_url = "sqlite:///%s" % path logging.info('[seafobj] database: sqlite3, path: %s', path) need_connection_pool_fix = False else: backend = config.get('database', 'type') if backend == 'mysql': if config.has_option('database', 'host'): host = config.get('database', 'host').lower() else: host = 'localhost' if config.has_option('database', 'port'): port = config.getint('database', 'port') else: port = 3306 username = config.get('database', 'user') passwd = config.get('database', 'password') dbname = config.get('database', 'db_name') db_url = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % (username, quote_plus(passwd), host, port, dbname) logging.warning('[seafobj] database: mysql, name: %s', dbname) elif backend == 'oracle': if config.has_option('database', 'host'): host = config.get('database', 'host').lower() else: host = 'localhost' if config.has_option('database', 'port'): port = config.getint('database', 'port') else: port = 1521 username = config.get('database', 'username') passwd = config.get('database', 'password') service_name = config.get('database', 'service_name') db_url = "oracle://%s:%s@%s:%s/%s" % (username, quote_plus(passwd), host, port, service_name) logging.info('[seafobj] database: oracle, service_name: %s', service_name) else: raise RuntimeError("Unknown database backend: %s" % backend) # Add pool recycle, or mysql connection will be closed by mysqld if idle # for too long. kwargs = dict(pool_recycle=300, echo=False, echo_pool=False) engine = create_engine(db_url, **kwargs) if need_connection_pool_fix and not has_event_listener(Pool, 'checkout', ping_connection): # We use has_event_listener to double check in case we call create_engine # multipe times in the same process. add_event_listener(Pool, 'checkout', ping_connection) return engine