def run_migrations_online(): """Run migrations in 'online' mode. In this scenario we need to create an Engine and associate a connection with the context. """ mysql_conf = cf.get_mysql_config() config.set_main_option( 'sqlalchemy.url', 'mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8mb4' % (mysql_conf['user'], mysql_conf['password'], mysql_conf['host'], mysql_conf['port'], mysql_conf['db'])) target_metadata = base_model.BaseModel.metadata connectable = engine_from_config(config.get_section( config.config_ini_section), prefix='sqlalchemy.', poolclass=pool.NullPool) with connectable.connect() as connection: context.configure(connection=connection, target_metadata=target_metadata) with context.begin_transaction(): context.run_migrations()
def run_migrations_offline(): """Run migrations in 'offline' mode. This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. Calls to context.execute() here emit the given string to the script output. """ mysql_conf = cf.get_mysql_config() config.set_main_option( 'sqlalchemy.url', 'mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8mb4' % (mysql_conf['user'], mysql_conf['password'], mysql_conf['host'], mysql_conf['port'], mysql_conf['db'])) target_metadata = base_model.BaseModel.metadata url = config.get_main_option("sqlalchemy.url") context.configure(url=url, target_metadata=target_metadata, literal_binds=True) with context.begin_transaction(): context.run_migrations()
def connect_db(): (DB_HOST, DB_NAME, DB_USER, DB_PASSWD) = config.get_mysql_config() conn = pymysql.connect(host=DB_HOST, user=DB_USER, password=DB_PASSWD, db=DB_NAME, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) #conn.execute("set sql_safe_updates=1") return conn
def connect_torndb(): (DB_HOST, DB_NAME, DB_USER, DB_PASSWD) = config.get_mysql_config() conn = torndb.Connection(DB_HOST, DB_NAME, DB_USER, DB_PASSWD, time_zone='+8:00', charset='utf8mb4') #conn.execute("set sql_safe_updates=1") return conn
from flask import Flask from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from config import load_config, get_log_folder, get_mysql_config from pbu import Logger from storage.shared import db from api.cli_commands import ComputeMetricsCommand # load config from .env file config = load_config() # ---- database and stores ---- host, db_name, username, password = get_mysql_config() uri = 'mysql://{0}:{1}@{2}/{3}'.format(username, password, host, db_name) app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = uri db.init_app(app) migrate = Migrate() migrate.init_app(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand) manager.add_command('metrics', ComputeMetricsCommand) if __name__ == '__main__': logger = Logger("DB", log_folder=get_log_folder()) manager.run()
def connect_tshbao(): (DB_HOST, DB_NAME, DB_USER, DB_PASSWD) = config.get_mysql_config() return torndb.Connection(DB_HOST, DB_NAME, DB_USER, DB_PASSWD)