Ejemplo n.º 1
0
def test_database():
    test_db = SqliteExtDatabase(":memory:")
    with test_db.bind_ctx(ALL_MODELS):
        test_db.create_tables(ALL_MODELS)
        try:
            yield
        finally:
            test_db.drop_tables(ALL_MODELS)
            test_db.close()
Ejemplo n.º 2
0
def memdb():
    mdb = SqliteExtDatabase(':memory:')
    models = [db.Job]
    mdb.bind(models)
    mdb.connect()
    mdb.create_tables(models)

    yield mdb

    mdb.close()
Ejemplo n.º 3
0
    def init_database(self):
        migrate_db = SqliteExtDatabase(self.config.database.path)

        # Run migrations
        del (logging.getLogger('peewee_migrate').handlers[:])
        router = Router(migrate_db)
        router.run()

        migrate_db.close()

        self.db = SqliteQueueDatabase(self.config.database.path)
        models = [Event]
        self.db.bind(models)
Ejemplo n.º 4
0
    def import_song_statistic_from(self, database_file):
        self.logger.info('Importing database songs statistics')
        try:
            from playhouse.sqlite_ext import SqliteExtDatabase
            other_database = SqliteExtDatabase(database_file)
            cursor = other_database.execute_sql(
                "SELECT ADDED, LAST_PLAYED, PLAYED, TITLE, ARTIST, ALBUM FROM SONG"
            )
            with database_context.atomic():
                for row in cursor.fetchall():
                    database_context.execute_sql(
                        "UPDATE SONG SET ADDED = ?, LAST_PLAYED = ?, PLAYED = ? WHERE TITLE = ? AND ARTIST = ? AND ALBUM = ?",
                        row)

            other_database.close()
        except:
            self.logger.exception(
                'Error while importing database songs statistics')
Ejemplo n.º 5
0
    def init_database(self):
        # Migrate DB location
        old_db_path = os.path.join(CLIPS_DIR, "frigate.db")
        if not os.path.isfile(
                self.config.database.path) and os.path.isfile(old_db_path):
            os.rename(old_db_path, self.config.database.path)

        # Migrate DB schema
        migrate_db = SqliteExtDatabase(self.config.database.path)

        # Run migrations
        del logging.getLogger("peewee_migrate").handlers[:]
        router = Router(migrate_db)
        router.run()

        migrate_db.close()

        self.db = SqliteQueueDatabase(self.config.database.path)
        models = [Event, Recordings]
        self.db.bind(models)
Ejemplo n.º 6
0
                                             body=resp)
                break
            n -= 1
        except Exception as e:
            print("[E] Error :", e)
            time.sleep(0.1)
    mybank = User.get(npm=user_id)
    total += mybank.saldo
    print("finish poll")
    print("total :", total, " sender :", sender_id)
    resp['nilai_saldo'] = total
    resp = json.dumps(resp)
    return channel.basic_publish(exchange='EX_GET_TOTAL_SALDO',
                                 routing_key='RESP_' + sender_id,
                                 body=resp)


def request_get_total_saldo(ch, method, properties, body):
    try:
        msg = json.loads(body.decode("utf-8"))
        print("[x] ", msg['action'], " message :", msg)
        get_total_saldo(msg)
    except Exception as e:
        print("[E] Error :", e)


channel.basic_consume(request_get_total_saldo, queue=queue_name, no_ack=True)

channel.start_consuming()
database.close()
Ejemplo n.º 7
0
class BefrankPipeline(object):
    def __init__(self):
        self.db = None
        self.setup_db_connection()
        self.create_tables()

    def setup_db_connection(self):
        self.db = SqliteExtDatabase('movies.db')
        self.db.connect()

    def create_tables(self):
        return self.db.create_tables[Movie, Star, Writer, Director, Genre,
                                     PlotKeyword]

    def close_db(self):
        self.db.close()

    def process_item(self, item, spider):
        for key, value in six.iteritems(item):
            if key == "CastMembers":
                continue

            if isinstance(value, list):
                if value:
                    templist = []
                    for obj in value:
                        temp = self.stripHTML(obj)
                        templist.append(temp)
                    item[key] = templist
                else:
                    item[key] = ""
            elif key is not 'MainPageUrl':
                item[key] = self.stripHTML(value)
            else:
                item[key] = value

        self.store_in_db(item)
        return item

    def store_in_db(self, item):
        self.storeFilmInfoInDb(item)
        film_id = self.cursor.lastrowid

        for cast in item['CastMembers']:
            self.storeActorInfoInDb(cast, film_id)

    def storeFilmInfoInDb(self, item):
        self.cur.execute("INSERT INTO Films(\
			title, \
			rating, \
			ranking, \
			release_date, \
			page_url, \
			director, \
			writers, \
			runtime, \
			sinopsis, \
			genres, \
			mpaa_rating, \
			budget, \
			language, \
			country, \
			gross_profit, \
			opening_weekend_profit, \
			aspect_ratio, \
			sound_mix, \
			color\
			) \
		VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"                                                                    , \
                         ( \
                             item.get('Title', ''),
                             float(item.get('Rating', 0.0)),
                             int(item.get('Ranking', 0)),
                             item.get('ReleaseDate', ''),
                             item.get('MainPageUrl', ''),
                             ', '.join(item.get('Director', '')),
                             ', '.join(item.get('Writers', '')),
                             item.get('Runtime', ''),
                             item.get('Sinopsis', '').strip(),
                             ', '.join(item.get('Genres', '')),
                             item.get('MpaaRating', ''),
                             self.cleanMoney(item.get('Budget', '')),
                             item.get('Language', ''),
                             item.get('Country', ''),
                             self.cleanMoney(item.get('GrossProfit', '')),
                             self.cleanMoney(item.get('OpeningWeekendProfit', '')),
                             item.get('AspectRatio', '').strip(),
                             ', '.join(item.get('SoundMix', '')),
                             item.get('Color', '')
                         ))
        self.con.commit()

    def storeActorInfoInDb(self, item, film_id):
        self.cur.execute(
            "INSERT INTO Actors(\
			film_id, \
			actor_name, \
			charecter_name, \
			ranking \
			) \
		VALUES(?,?,?,?)",
            (film_id, self.stripHTML(item.get('ActorName', '')).strip(),
             self.stripHTML(item.get('CharacterName',
                                     '')).strip(), item.get('Ranking', 0)))
        self.con.commit()

    def stripHTML(self, string):
        tagStripper = MLStripper()
        tagStripper.feed(string)
        return tagStripper.get_data()

    def cleanMoney(self, string):
        # you could add more simpbles to this, but it gets kinda complex with some of the symbles being unicode, so I skpped that for now.
        currencySymbles = "$"
        cleanMoneyString = ""
        stopAdding = False
        for index, char in enumerate(list(string)):
            if char in currencySymbles and not stopAdding:
                cleanMoneyString += char
            elif char == "," and not stopAdding:
                cleanMoneyString += char
            elif char.isdigit() and not stopAdding:
                cleanMoneyString += char
            elif char in ' ':
                # we know that numbers do not have spaces in them, so we can assume that once the number
                # has started there will be no spaces
                if len(cleanMoneyString) > 0:
                    stopAdding = True

        return cleanMoneyString
Ejemplo n.º 8
0
def libgen(mol_list, output_name):
    """
    function to generate a database format library of fragments from a mol, list of mol objects, .smi, or .sdf file
    :param mol_list: list of molecules, a single molecule, or a filename of molecules to read
    :type mol_list: str|Chem.Mol|[Chem.Mol]
    :param output_name: name of the database to use?
    :type output_name: str
    :return:
    """
    # if a file not a list then read into list
    if isinstance(mol_list, str) and mol_list.endswith(".smi"):
        mol_list = Chem.SmilesMolSupplier(mol_list,
                                          delimiter="\t",
                                          titleLine=False)
    elif isinstance(mol_list, str) and mol_list.endswith(".sdf"):
        mol_list = Chem.SDMolSupplier(mol_list)
    elif type(mol_list) == Chem.Mol:
        mol_list = [mol_list]
    elif type(mol_list) == list:
        assert type(mol_list[0]) == Chem.Mol
    else:
        raise Exception(
            "Did you provide a list of mol objects? Input type error.")

    fragment_dict_deque = deque()
    heritage_dict_deque = deque()
    atoms_dict_deque = deque()
    pseudoatoms_dict_deque = deque()
    logger.info("Fragmenting:")
    n = len(mol_list)
    i = 0
    t0 = time.time()
    for mol in mol_list:
        re_mol = RecomposerMol.fromMol(mol=mol)
        frag_list, heritage_list, atoms_list, pseudo_atoms_list = re_mol.get_all_fragments(
            7)
        fragment_dict_deque.extend(frag_list)
        heritage_dict_deque.extend(heritage_list)
        atoms_dict_deque.extend(atoms_list)
        pseudoatoms_dict_deque.extend(pseudo_atoms_list)
        logger.info("DONE: %d/%d %.f" % (i, n, 1000 * (time.time() - t0) /
                                         (i + 1)))
        i += 1

    logger.info("Done")
    logger.info("Saving:")

    # create the database for the output
    db = SqliteExtDatabase(
        output_name,
        pragmas={
            'cache_size': -1024 * 64,  # 64MB page-cache.
            'journal_mode':
            'wal',  # Use WAL-mode (you should always use this!).
            'foreign_keys': 0,
            'wal_autocheckpoint': 10,
        })

    db.connect()
    # get the models
    Fragment, Heritage, PseudoAtoms, Atoms = lib_read(db)

    Fragment.create_table(safe=True)
    Heritage.create_table(safe=True)
    PseudoAtoms.create_table(safe=True)
    Atoms.create_table(safe=True)
    with db.atomic():
        if len(fragment_dict_deque) > 0:
            for ents in chunked(fragment_dict_deque, 200):
                query = Fragment.replace_many(ents)
                query.execute()
            for ents in chunked(heritage_dict_deque, 200):
                query = Heritage.replace_many(ents)
                query.execute()
            for ents in chunked(pseudoatoms_dict_deque, 200):
                query = PseudoAtoms.replace_many(ents)
                query.execute()
            for ents in chunked(atoms_dict_deque, 200):
                query = Atoms.replace_many(ents)
                query.execute()
    db.close()
    clean(output_name)

    return 1
Ejemplo n.º 9
0

class BaseModel(Model):
    class Meta:  # noqa
        database = db


class Video(BaseModel):
    id = TextField(primary_key=True)
    url = TextField()
    title = TextField()


db.connect()
Video.create_table(True)
db.close()


def is_admin(user):
    if user['hash'] == config['owner']:
        logging.info("%s(%s) authenticated as owner", user['name'],
                     user['hash'])
        return 2
    if user['hash'] in config.as_list('admins'):
        logging.info("%s(%s) authenticated as admin", user['name'],
                     user['hash'])
        return 1
    logging.info("Failed to authenticate %s(%s)", user['name'], user['hash'])
    return 0

class Channel(BaseModel):
	name = CharField(unique=True)
	num = IntegerField(default=0)

class ChannelPublisher(BaseModel):
	ch_id = ForeignKeyField(Channel, related_name='channel_pub')
	pub_id = ForeignKeyField(User, related_name='publisher')

class ChannelSubscriber(BaseModel):
	ch_id = ForeignKeyField(Channel, related_name='channel_sub')
	sub_id = ForeignKeyField(User, related_name='subscriber')
	ts = IntegerField()

class Feed(BaseModel):
	ch_id = ForeignKeyField(Channel, related_name='channel_feed')
	pub_id = ForeignKeyField(User, related_name='publisher_feed')
	text = CharField()
	sid = IntegerField()

db.connect()
print 'Database Connected'

if __name__ == "__main__":
	if len(sys.argv) >=2 and sys.argv[1] == 'clear':
		db.close()
		os.remove('my_database.db')
		db.connect()
		db.create_tables([User, Channel, ChannelPublisher, ChannelSubscriber, Feed])
		db.close()
		print 'Database cleared'