class PDatabaseFactory: def __init__(self, config): self.cfg = config self.instances = {} self.defaut_instance = self.cfg.get('db', 'database') self.sqlite_db_path = self.cfg.get('sqlite', 'path') self.database_proxy = DatabaseProxy() def get_instance(self, instance: str = None): if not instance: instance = self.defaut_instance if instance not in self.instances.keys(): if instance == 'sqlite': instance_obj = CSqliteExtDatabase(self.sqlite_db_path, autoconnect=False) elif instance == 'sqlite-app-test': PACKAGR_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) instance_obj = CSqliteExtDatabase(os.path.join(PACKAGR_DIR, 'mediastrends_test.db')) elif instance == 'memory': instance_obj = CSqliteExtDatabase(':memory:') else: raise ValueError("Instance %s not defined" % (instance)) self.instances[instance] = instance_obj instance = self.instances[instance] self.database_proxy.initialize(instance) return instance
# @Time : 2020/7/15 上午11:55 # @Author : Hanley # @File : base_model.py # @Desc : import datetime from peewee import (CharField, DateTimeField, Model, IntegerField, SmallIntegerField, DatabaseProxy) from commons.initlog import logging from utils.database_util import RetryConnectMysql _mysql = RetryConnectMysql.connect_mysql() database_proxy = DatabaseProxy() database_proxy.initialize(_mysql) class BaseModel(Model): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) class Meta: database = database_proxy class CommonBase(BaseModel): status = SmallIntegerField(null=False, default=1, index=True,
class ImageAnnotation(BaseModel): timestamp = DateTimeField(default=datetime.datetime.now) points = JSONField(null=True) image_id = IntegerField() class_id = IntegerField(default=0) session_name = TextField() class Session(BaseModel): session_name = TextField(default=lambda: uuid.uuid4().hex, unique=True) timestamp = DateTimeField(default=datetime.datetime.now) try: psql_db.initialize( playhouse.db_url.connect('postgresql://*****:*****@db:5432/fuckdb')) psql_db.connect() psql_db.create_tables([ImageStorage, ImageAnnotation, Session]) except Exception as e: print(e) logger = get_logger('interactive learning') def image2base64(f): # check if there are any image, parse image to base64 def wrapper(*args, **kwargs): result = f(*args, **kwargs) if type(result) is not dict: if type(result) is np.ndarray: result = {'data': result}
id = AutoField() code = CharField(unique=True, max_length=50) creation_time = DateTimeField(default=datetime.datetime.now) simple = ForeignKeyField(SimpleTable, backref='joins') # ============================================================================== # if app.config['DEBUG']: # database = SqliteDatabase('local.db') # elif app.config['TESTING']: # database = SqliteDatabase(':memory:') # else: # database = PostgresqlDatabase('mega_production_db') # ============================================================================== database_proxy.initialize(SqliteDatabase('simple_flask_peewee_db.db')) id_simple_table = None try: SimpleTable.create_table() id_simple_table = SimpleTable.insert({SimpleTable.code: 'CODE'}).execute() except OperationalError: print('SimpleTable alredy exists') except IntegrityError: id_simple_table = SimpleTable.select().where( SimpleTable.code == 'CODE').execute()[0].id id_join_table = None try: JoinTable.create_table() id_join_table = JoinTable.insert({