class Update(Base): """ Update class that represents a device update """ __tablename__ = 'firmware' id: int = Column(INT(), primary_key=True, autoincrement=True) codename: str = Column(VARCHAR(30), nullable=False) version: str = Column(VARCHAR(20), nullable=False) android: str = Column(VARCHAR(5), nullable=False) branch: str = Column(VARCHAR(15), nullable=False) size: str = Column(BIGINT(), nullable=True) md5: str = Column(CHAR(32), unique=True, nullable=True) filename: str = Column(TEXT(), unique=True, nullable=True) github_link: str = Column(TEXT(), nullable=False) osdn_link: str = Column(TEXT(), nullable=True) date: str = Column(DATE(), nullable=True) inserted_on: str = Column(TIMESTAMP(), default=current_timestamp()) def __repr__(self): return f"<Update(codename={self.codename}, version={self.version}, branch={self.branch})>" def __str__(self): return str( {k: v for k, v in self.__dict__.items() if not k.startswith("_")})
class EnterpriseModel(base.ModelBase): __tablename__ = 'enterprise' id = Column(Integer, primary_key=True) name = Column(String(100)) email = Column(String(55)) phone = Column(String(55)) tyt_url = Column(String(100)) company_url = Column(String(100)) address = Column(String(255)) register_funds = Column(String(20)) paidin_funds = Column(String(20)) establish_date = Column(Date) status = Column(String(30)) credit_code = Column(String(30)) registration_number = Column(String(120)) identification_number = Column(String(120)) organization_code = Column(String(80)) company_type = Column(String(30)) industry = Column(String(100)) business_term = Column(String(55)) taxpayer_qualification = Column(String(120)) personnel_size = Column(String(120)) insured_num = Column(String(30)) resume = Column(TEXT()) registered_scope = Column(String(200)) business_scope = Column(TEXT())
class Encryption(Base, SerializableMixin): __tablename__ = 'encryption' id = Column(BigInteger, primary_key=True) keyhash = Column(TEXT()) comment = Column(TEXT()) runtimes = relationship('Runtime', back_populates='encryption')
class Attack(Base, SerializableMixin): __tablename__ = 'attacks' id = Column(BigInteger, primary_key=True) id_misp = Column(BigInteger) date = Column(DateTime(timezone=True)) start = Column(DateTime(timezone=True)) stop = Column(DateTime(timezone=True)) target = Column(TEXT()) attack_type = Column(TEXT()) attack_tool = Column(TEXT()) attack_source = Column(TEXT()) ip_count = Column(Integer) sync_start = Column(DateTime(timezone=True)) sync_stop = Column(DateTime(timezone=True)) processed = Column(Integer) notes = Column(TEXT) analysis_notebook = Column(TEXT) request_sets = relationship('RequestSet', secondary='requestset_attack_link', back_populates='attacks') attributes = relationship('Attribute', secondary='attribute_attack_link', back_populates='attacks')
class Update(Base): """ Update class that represents a device update """ __tablename__ = 'updates' id: int = Column(INT(), primary_key=True, autoincrement=True) codename: str = Column(VARCHAR(30), nullable=False) version: str = Column(VARCHAR(20), nullable=False) android: str = Column(VARCHAR(5), nullable=False) branch: str = Column(VARCHAR(15), nullable=False) type: str = Column(VARCHAR(11), nullable=False) method: str = Column(VARCHAR(8), nullable=False) size: str = Column(BIGINT(), nullable=True) md5: str = Column(CHAR(32), unique=True, nullable=True) filename: str = Column(TEXT(), unique=True, nullable=True) link: str = Column(TEXT(), nullable=False) changelog: str = Column(TEXT(), nullable=True, default='Bug fixes and system optimizations.') date: str = Column(DATE(), nullable=True) inserted_on: str = Column(TIMESTAMP(), default=current_timestamp()) def __repr__(self): return f"<Update(codename={self.codename}, version={self.version}, branch={self.branch}, method={self.method})>" def __str__(self): return str({k: v for k, v in self.__dict__.items() if not k.startswith("_")})
class Challenge(Base, SerializableMixin): __tablename__ = 'challenge' id = Column(BigInteger, primary_key=True) start = Column(DateTime(timezone=True)) host = Column(TEXT(), nullable=False) expiration = Column(Integer, nullable=True) comment = Column(TEXT(), nullable=True) created_at = Column(DateTime(timezone=True), server_default=utcnow())
class OsmRel(Base): __tablename__ = 'osm_rels' id = Column(BigInteger, primary_key=True) way_off = Column(SmallInteger) rel_off = Column(SmallInteger) parts = Column(ARRAY(BIGINT()), index=True) members = Column(ARRAY(TEXT())) tags = Column(ARRAY(TEXT()))
class linksTable(): table_name = "useful_links" metadata = MetaData() useful_links = Table(table_name, metadata, Column('item_group', String(64)), Column('item_name', String(64)), Column('links', ARRAY(TEXT())), Column("resource_description", TEXT()))
class KeySaltModel(BaseModel): __tablename__ = "key_salt" source_type_1 = '1' # pc source_type_2 = '2' # wap source_type_3 = '3' # iphone source_type_4 = '4' # android user_id = Column(String(128), nullable=False, comment="用户id", server_default="") user_type = Column(TINYINT(1), nullable=False, comment="用户类型:0 invest, 1 admin", server_default="0") user_level = Column(Integer, nullable=False, comment="用户级别,user_type的子类", server_default="0") request_type = Column(TINYINT(1), nullable=False, comment="请求类型:0 注册, 1 登录后", server_default="1") bcrypt_salt = Column(String(128), nullable=False, comment="bcrypt算法密码加密参数", server_default="") server_public_key = Column(TEXT(1280), nullable=False, comment="服务器公钥PEM") server_private_key = Column(TEXT(1280), nullable=False, comment="服98`880务器私钥PEM") share_key = Column(String(256), nullable=False, comment="shareKey", server_default="") client_public_key = Column(TEXT(1280), nullable=False, comment="客户端公钥PEM") nonce = Column(String(128), nullable=False, comment="随机数", server_default="") source = Column(TINYINT(4), nullable=False, comment="用户来源", server_default=source_type_1) def __init__(self, *args, **kwargs): super(KeySaltModel, self).__init__(*args, **kwargs) @staticmethod def get_all_source_type(): return [ KeySaltModel.source_type_1, KeySaltModel.source_type_2, KeySaltModel.source_type_3, KeySaltModel.source_type_4, ]
class TwitterMessage(BaseModel): __tablename__ = 'twitter_message_ref_2' id = Column(String(30), primary_key=True) user = Column(String(100)) replies = Column(Integer) retweets = Column(Integer) favorites = Column(Integer) timestamp = Column(Integer) permalink = Column(String(500)) textUrl = Column(String(500)) text = Column(String(4096)) text_transfer = Column(String(4096)) reference_url = Column(String(500)) reference_source = Column(TEXT()) reference_text = Column(TEXT())
class ZhiHuUserInfo(Base): """ 知乎用户数据 """ __tablename__ = 'zhhuserinfos' id = Column(Integer, primary_key=True) name = Column(String(64), default=u'未知') headline = Column(String(128), default=u'未知') location = Column(String(64), default=u'未知') description = Column(TEXT(), default=u'未知') voteup_count = Column(Integer) thanked_count = Column(Integer) favorited_count = Column(Integer) logs_count = Column(Integer) question_count = Column(Integer) url_token = Column(String(64), default=u'未知') follower_count = Column(Integer) following_count = Column(Integer) business = Column(String(64), default=u'未知') employment = Column(String(64), default=u'未知') company = Column(String(64), default=u'未知') update_time = Column(DateTime()) updata_flag = Column(Boolean, default=True) crawl_flag = Column(Boolean, default=False) def __repr__(self): return 'ZhiHuUser %r' % self.name
class Queue(Base): __tablename__ = 'queue' id = Column(BIGINT(), primary_key=True, nullable=False) queue_pkey = PrimaryKeyConstraint('id') enqueued_at = Column(TIMESTAMP(timezone=True), server_default=text('now()'), autoincrement=False, nullable=False) dequeued_at = Column(TIMESTAMP(timezone=True), autoincrement=False, nullable=True) expected_at = Column(TIMESTAMP(timezone=True), autoincrement=False, nullable=True) schedule_at = Column(TIMESTAMP(timezone=True), autoincrement=False, nullable=True) q_name = Column(TEXT(), CheckConstraint('length(q_name) > 0', name='queue_q_name_check'), autoincrement=False, nullable=False) data = Column(JSON(astext_type=Text()), autoincrement=False, nullable=False) __table_args__ = (Index('priority_idx', "schedule_at", "expected_at"), )
class OsmNode(Base): __tablename__ = 'osm_nodes' id = Column(BigInteger, primary_key=True) lat = Column(Integer, nullable=False) lon = Column(Integer, nullable=False) tags = Column(ARRAY(TEXT()))
class Users(Base): __tablename__ = "maps_users" id = Column(Integer, primary_key=True) Username = Column(String(25), primary_key=True, unique=True) FullName = Column(String(40)) Alamat = Column(String(60)) Password = Column(String(30)) Email = Column(String(30), unique=True) Phone = Column(String(16)) Work = Column(String(16)) Profile_Image_Location = Column(String(200)) Profile_Description = Column(TEXT()) Website = Column(String(30)) Date_Joined = Column(DATE()) Last_Log = Column(String(100)) def __init__(self, Username, FullName, Password, Email, Phone, Work, Last_Log): self.Username = Username self.FullName = FullName self.Password = Password self.Email = Email self.Phone = Phone self.Work = Work self.Last_Log = Last_Log
class Transaction(Base, RubyHashTrackable): __tablename__ = 'transaction' id = Column(Integer, primary_key=True) value = Column(DECIMAL(8, 2), nullable=False) timestamp = Column(TIMESTAMP, nullable=False) src = Column(ForeignKey('account.id'), nullable=False, index=True) dst = Column(ForeignKey('account.id'), nullable=False, index=True) name = Column(String(255), nullable=False) attachments = Column(TEXT(65535), nullable=False) type = Column(ForeignKey('payment_method.id'), nullable=False, index=True) dst_account = relationship('Account', foreign_keys=[dst]) src_account = relationship('Account', foreign_keys=[src]) payment_method = relationship('PaymentMethod') def serialize_snapshot_diff(self, snap_before: dict, snap_after: dict) -> str: """ Override this method to add the prefix. """ modif = rubydiff(snap_before, snap_after) modif = '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\n' + modif return modif def get_related_member(self): return self
class Comments(Base): __tablename__ = 'comments' id = Column(Integer, primary_key=True) commentid = Column(String(10), nullable=False, unique=True) postid = Column(String(10), ForeignKey("submissionslarge.postid"), nullable=False) subredditid = Column(String(10), nullable=False) autor = Column(String(250)) body = Column(TEXT(convert_unicode=True)) score = Column(Integer) subredditname = Column(String(200)) datum = Column(DateTime) autorflair = Column(String(200)) datumtag = Column(DateTime) gilded = Column(Integer) ups = Column(Integer) downs = Column(Integer) controversiality = Column(Integer) depth = Column(Integer) replies = Column(Integer) parentid = Column(String(10)) isroot = Column(Boolean)
class Topic(Base): # 表的名字 __tablename__ = 'topic' # 表的结构 topicId = Column(Integer(), primary_key=True, autoincrement=True) content = Column(TEXT()) topicTime = Column(DATETIME()) userId = Column(Integer()) lastTime = Column(DATETIME()) picture1 = Column(String()) picture2 = Column(String()) picture3 = Column(String()) picture4 = Column(String()) picture5 = Column(String()) likes = Column(Integer(), default=0) replyNum = Column(Integer(), default=0) comNum = Column(Integer(), default=0) def __repr__(self): return "<Topic(topicId='%s', content='%s', topicTime='%s', userId='%s', lastTime='%s', picture1='%s', picture2='%s', picture3='%s', picture4='%s', picture5='%s', likes='%s', replyNum='%s', comNum='%s')>" % ( self.topicId, self.content, self.topicTime, self.userId, self.lastTime, self.picture1, self.picture2, self.picture3, self.picture4, self.picture5, self.likes, self.replyNum, self.comNum )
class Transaction(db.Model, RubyHashTrackable): __tablename__ = 'transactions' id = Column(Integer, primary_key=True) value = Column(DECIMAL(8, 2), nullable=False) timestamp = Column(DateTime, nullable=False, default=func.now(), server_default=func.now()) src = Column(Integer, index=True, nullable=False) dst = Column(Integer, index=True, nullable=False) name = Column(String(255), nullable=False) attachments = Column(TEXT(65535), nullable=False) type = Column(Integer, index=True, nullable=False) author_id = Column(Integer, index=True, nullable=False) pending_validation = Column(Boolean(), nullable=False) membership_uuid = Column(String(36), nullable=True) is_archive = Column(Boolean, default=False, nullable=True) def serialize_snapshot_diff(self, snap_before: dict, snap_after: dict) -> str: """ Override this method to add the prefix. """ modif = rubydiff(snap_before, snap_after) modif = '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\n' + modif return modif def get_related_member(self): return self.author_id
class rp_weiboUserStatus(base): # 表属性 __tablename__ = 'rp_weibo_user_status_list' __table_args__ = {'mysql_collate': 'utf8mb4_general_ci'} # 专属字段 rp_id = Column(Integer, primary_key=True, autoincrement=True, nullable=False, comment='微博用户状态报表id') # 整数,默认主键,自增 rp_status_id = Column(String(50), nullable=False, comment='微博状态id') rp_uid = Column(String(50), nullable=False, comment='微博用户id') rp_uname = Column(String(255), comment='微博用户名') rp_content_stm_id = Column(Integer, nullable=False, comment='媒体流ID') rp_status_text = Column(TEXT(), comment='状态内容') rp_repost_num = Column(Integer, comment='转发数') rp_comment_num = Column(Integer, comment='评论数') rp_like_num = Column(Integer, comment='点赞数') rp_publish_time = Column(String(255), comment='发文时间') # 共有字段 sys_createtime = Column(TIMESTAMP, nullable=False, server_default=func.now(), comment='创建时间') sys_creator = Column(Integer, comment='创建用户的id') sys_edittime = Column(TIMESTAMP, comment='编辑时间') sys_editor = Column(Integer, comment='编辑用户的id') sys_deletime = Column(TIMESTAMP, comment='删除时间') sys_deletor = Column(Integer, comment='删除用户的id') sys_status = Column(Boolean, nullable=False, server_default='1', comment='状态值,1有效0无效')
class Message(AsDictMixin, Base): __tablename__ = 'messages' __table_args__ = ( dict(schema=app_schema), ) id = Column(String(16), primary_key=True, unique=True) content = Column(TEXT(), nullable=False) subject = Column(String(128)) sender_id = Column(ForeignKey(u'%speople.id' % core_pre), nullable=False) recipient_id = Column(ForeignKey(u'%speople.id' % core_pre)) # TODO use the many-to-many table instead list_id = Column(ForeignKey(u'%slists.id' % core_pre)) privacy = Column(String(8), nullable=False, server_default=u'secret') published = Column(BOOLEAN) uid = Column(ForeignKey(u'%speople.id' % core_pre, ondelete='CASCADE'), nullable=False) viewed = Column(TIMESTAMP) created = Column(TIMESTAMP, nullable=False, server_default=func.now()) modified = Column(TIMESTAMP) status = Column(Enum('active', u'disabled'), nullable=False, server_default=u'active') list = relationship('List') owner = relationship('Person', foreign_keys=[uid]) recipient = relationship('Person', foreign_keys=[recipient_id])
class List(AsDictMixin, Base): __tablename__ = 'lists' __table_args__ = ( UniqueConstraint(u'name', u'uid', name='uniq_list_owner'), dict(schema=core_schema), ) __rest_related__ = ('members', ) id = Column(String(16), primary_key=True, unique=True) name = Column(String(64), nullable=False) description = Column(TEXT()) privacy = Column(String(8), nullable=False, server_default=u'secret') category_id = Column(ForeignKey(u'%scategories.id' % schema_pre), nullable=False) uid = Column(ForeignKey(u'%speople.id' % schema_pre, ondelete='CASCADE'), nullable=False) created = Column(TIMESTAMP, nullable=False, server_default=func.now()) modified = Column(TIMESTAMP) status = Column(Enum('active', u'disabled'), nullable=False) members = relationship('Person', secondary='listmembers', backref=backref('people'), order_by='Person.name') # messages = relationship('Message', secondary='listmessages', # backref=backref('lists'), # order_by='Message.created') category = relationship('Category') owner = relationship('Person', foreign_keys=[uid], backref=backref('list_uid', cascade='all, delete-orphan'))
def test_addr_composite(self): flds = "name addr1 addr2 addr3 addr4 email fax phone".split() class B(DeclarativeBaseGuid): __tablename__ = "b_table" def __init__(self, **kwargs): for k, v in kwargs.items(): setattr(self, k, v) l = [] for fld in flds: col = Column(fld, TEXT()) setattr(B, fld, col) l.append(col) B.addr = composite(Address, *l) s = session() a = B(addr1="foo") assert a.addr a.addr.fax = "baz" assert a.addr1 == "foo" assert a.addr.addr1 == "foo" assert a.addr.fax == "baz" s.add(a) s.flush()
class BookDes(Base): __tablename__ = 'book_des' id = Column(INT(), primary_key=True) img = Column(VARCHAR(255)) book_id = Column(VARCHAR(255)) title = Column(VARCHAR(255)) author = Column(VARCHAR(255)) score = Column(VARCHAR(255)) press = Column(VARCHAR(255)) producers = Column(VARCHAR(255)) sub_title = Column(VARCHAR(255)) origin_name = Column(VARCHAR(255)) translator = Column(VARCHAR(255)) publish_time = Column(VARCHAR(255)) page = Column(VARCHAR(255)) price = Column(VARCHAR(255)) comment_num = Column(VARCHAR(255)) star = Column(VARCHAR(255)) content_des = Column(TEXT()) author_des = Column(TEXT()) tags = Column(VARCHAR(255)) book_sub_label_id = Column( INT(), ForeignKey('book_sub_label.id', ondelete='CASCADE')) def __init__(self, img, book_id, title, author, score, press, producers, sub_title, origin_name, translator, publish_time, page, price, comment_num, star, content_des, author_des, tags): self.img = img self.book_id = book_id self.title = title self.author = author self.score = score self.press = press self.producers = producers self.sub_title = sub_title self.origin_name = origin_name self.translator = translator self.publish_time = publish_time self.page = page self.price = price self.comment_num = comment_num self.star = star self.content_des = content_des self.author_des = author_des self.tags = tags self.book_sub_label_id = []
class SysIntroduction(Base): __tablename__ = 'SysIntroduction' id = Column(Integer, primary_key=True) code = Column(String(50, 'Chinese_PRC_CI_AS'), nullable=False) abstract = Column(TEXT(2147483647, 'Chinese_PRC_CI_AS')) date = Column(DateTime) title = Column(String(100, 'Chinese_PRC_CI_AS'))
def get_table(metadata): return Table('updates', metadata, Column('id', INT(), primary_key=True, autoincrement=True), Column('codename', VARCHAR(30), nullable=False), Column('version', VARCHAR(20), nullable=False), Column('android', VARCHAR(5), nullable=False), Column('branch', VARCHAR(15), nullable=False), Column('type', VARCHAR(11), nullable=False), Column('method', VARCHAR(8), nullable=False), Column('size', BIGINT(), nullable=True), Column('md5', CHAR(32), nullable=True, unique=True), Column('filename', TEXT(), nullable=False, unique=True), Column('link', TEXT(), nullable=False), Column('changelog', TEXT(), nullable=True, default='Bug fixes and system optimizations.'), Column('date', DATE(), nullable=True), Column('inserted_on', TIMESTAMP(), default=current_timestamp()), ForeignKeyConstraint(['codename'], ['devices.codename']))
class Network(Base): __tablename__ = 'network' __table_args__ = {} id = Column('id', BIGINT, primary_key=True, nullable=False) mask = Column('mask', SMALLINT, nullable=False) gateway = Column('gateway', CHAR(length=32), nullable=False) ip_pool = Column('ip_pool', TEXT())
def get_table(metadata): return Table( 'firmware', metadata, Column('id', INT(), primary_key=True, autoincrement=True), Column('codename', VARCHAR(30), nullable=False), Column('version', VARCHAR(20), nullable=False), Column('android', VARCHAR(5), nullable=False), Column('branch', VARCHAR(15), nullable=False), Column('size', BIGINT(), nullable=True), Column('md5', CHAR(32), nullable=True, unique=True), Column('filename', TEXT(), nullable=False, unique=True), Column('github_link', TEXT(), nullable=False), Column('osdn_link', TEXT(), nullable=True), Column('date', DATE(), nullable=True), Column('inserted_on', TIMESTAMP(), default=current_timestamp()), ForeignKeyConstraint(['codename'], ['devices.codename'], use_alter=True))
class bilibili_info_base(bilibiliInformation): __tablename__ = "bili_info" id = Column('id', Integer(), autoincrement=True, primary_key=True) title = Column("title", TEXT()) # 标题 aid = Column('aid', Integer(), unique=True) # aid cid = Column("cid", TEXT()) # cid copyright = Column("copyright", TEXT()) # 版权:1、可以正常转载;2、无法转载 tname = Column("tname", TEXT()) # 类别 videos = Column("videos", Integer()) # page数量 ctime = Column("ctime", DATETIME()) # 创建时间 pubdate = Column("pubdate", DATETIME()) # 更新时间 duration = Column("duration", Integer()) # 视频时长 coin = Column("coin", Integer()) # 硬币 favorite = Column("favorite", BigInteger()) # 好评 likes = Column("likes", BigInteger()) # 收藏 archive = Column("archive", TEXT()) # 全部信息 update_time = Column("update_time", DATETIME())
class Service(db.Model): __bind_key__ = "supervisor_backend" __tablename__ = "services" id = Column("id", VARCHAR(11), primary_key=True) name = Column("name", TEXT(), default="Untitled Service") timestamp = Column("timestamp", Integer(), default=0) mem = Column("ram_req", Integer(), default=0) status = Column("status", Boolean(), default=False) pid = Column("pid", Integer(), default=-1) dir = Column("dir", TEXT(), default="") exec = Column("exec", TEXT(), default="") args = Column("args", TEXT(), default="") keep_alive = Column("keep_alive", Boolean(), default=False) can_vote = Column("can_vote", Boolean(), default=False) @classmethod def from_dict(cls, data): service = cls(id=data['id'], name=data["name"], timestamp=data["timestamp"], mem=data["mem"], status=data["status"], pid=data["pid"], dir=data["dir"], exec=data["exec"], args=data["args"], keep_alive=data["keep_alive"], can_vote=data["can_vote"]) return service def to_dict(self): return { "id": self.id, "name": self.name, "timestamp": self.timestamp, "mem": self.mem, "status": self.status, "pid": self.pid, "dir": self.dir, "exec": self.exec, "args": self.args, "keep_alive": self.keep_alive, "can_vote": self.can_vote }
class Machine(Base): __tablename__ = Mtbl # 表名 id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(32), nullable=False) rank = Column(Float(precision=3)) memo = Column(TEXT(500)) def __repr__(self): return "(%s: [%s] --> %s)" % (self.id, self.name, self.rank)