1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
from sqlalchemy import create_engine, and_, or_, func, Table from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, DateTime from sqlalchemy.orm import sessionmaker, relationship
Base = declarative_base()
class Host(Base): __tablename__ = 'host' id = Column(Integer, primary_key=True, autoincrement=True) hostname = Column(String(64), unique=True, nullable=False) ip_addr = Column(String(128), unique=True, nullable=False) port = Column(Integer, default=22)
class HostUser(Base): __tablename__ = 'host_user' id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String(64), unique=True, nullable=False) AuthTypes = [ ('p', 'SSH/Password'), ('r', 'SSH/KEY'), ] auth_type = Column(String(16)) cert = Column(String(255))
host_id = Column(Integer, ForeignKey('host.id'))
__table_args__ = ( UniqueConstraint('host_id', 'username', name='_host_username_uc'), )
class Group(Base): __tablename__ = 'group' id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(64), unique=True, nullable=False)
class UserProfile(Base): __tablename__ = 'user_profile' id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String(64), unique=True, nullable=False) password = Column(String(255), nullable=False)
class Group2UserProfile(Base): __tablename__ = 'group_2_user_profile' id = Column(Integer, primary_key=True, autoincrement=True) user_profile_id = Column(Integer, ForeignKey('user_profile.id')) group_id = Column(Integer, ForeignKey('group.id')) __table_args__ = ( UniqueConstraint('user_profile_id', 'group_id', name='ux_user_group'), )
class Group2HostUser(Base): __tablename__ = 'group_2_host_user' id = Column(Integer, primary_key=True, autoincrement=True) host_user_id = Column(Integer, ForeignKey('host_user.id')) group_id = Column(Integer, ForeignKey('group.id')) __table_args__ = ( UniqueConstraint('group_id', 'host_user_id', name='ux_group_host_user'), )
class UserProfile2HostUser(Base): __tablename__ = 'user_profile_2_host_user' id = Column(Integer, primary_key=True, autoincrement=True) host_user_id = Column(Integer, ForeignKey('host_user.id')) user_profile_id = Column(Integer, ForeignKey('user_profile.id')) __table_args__ = ( UniqueConstraint('user_profile_id', 'host_user_id', name='ux_user_host_user'), )
class AuditLog(Base): __tablename__ = 'audit_log' id = Column(Integer, primary_key=True, autoincrement=True)
action_choices2 = [ (u'cmd', u'CMD'), (u'login', u'Login'), (u'logout', u'Logout'), ] action_type = Column(String(16)) cmd = Column(String(255)) date = Column(DateTime) user_profile_id = Column(Integer, ForeignKey('user_profile.id')) host_user_id = Column(Integer, ForeignKey('host_user.id'))
表结构示例
|