Source code for scylla.database

import datetime

from peewee import Model, CharField, DateTimeField, BooleanField, FloatField, IntegerField, SqliteDatabase

from scylla.config import get_config
from scylla.loggings import logger

_db = None


[docs]def create_connection() -> SqliteDatabase: """ create a database connection :rtype: SqliteDatabase """ global _db if _db: return _db else: logger.debug('create new connection') _db = SqliteDatabase(get_config('db_path', './scylla.db')) return _db
[docs]def create_db_tables(): db = create_connection() db.create_tables([ProxyIP])
[docs]class BaseModel(Model): class Meta: database = create_connection()
[docs]class ProxyIP(BaseModel): class Meta: table_name = 'proxy_ips' ip = CharField(unique=True) port = IntegerField() is_valid = BooleanField(default=False) created_at = DateTimeField(default=datetime.datetime.now) updated_at = DateTimeField(default=datetime.datetime.now) latency = FloatField() stability = FloatField() is_anonymous = BooleanField(default=False) location = CharField(null=True) organization = CharField(null=True) region = CharField(null=True) country = CharField(null=True) city = CharField(null=True) def __str__(self): return '[database.ProxyIP ip: {}, port: {}, is_valid: {}, latency: {}]' \ .format(self.ip, self.port, self.is_valid, self.latency) def __repr__(self): return self.__str__()