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
Exemple #2
0
# @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,
Exemple #3
0
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}
Exemple #4
0
    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({