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
   | #!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy import create_engine
  engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/t1", max_overflow=5) #创建引擎,还可以加上echo=True,加上后会显示创建sql的命令
  Base = declarative_base() #创建基类
  # 创建单表 class Users(Base):     __tablename__ = 'users'   #表名     id = Column(Integer, primary_key=True) #必须要有主键,且主键是自增的     name = Column(String(32))     extra = Column(String(16))
      __table_args__ = (     UniqueConstraint('id', 'name', name='uix_id_name'),         Index('ix_id_name', 'name', 'extra'),     )
      def __repr__(self):      #当执行查询的时候返回数据,而不是对象         return "%s-%s" %(self.id, self.name)
  # 一对多 class Favor(Base):     __tablename__ = 'favor'     nid = Column(Integer, primary_key=True)     caption = Column(String(50), default='red', unique=True)
      def __repr__(self):         return "%s-%s" %(self.nid, self.caption)
  class Person(Base):     __tablename__ = 'person'     nid = Column(Integer, primary_key=True)     name = Column(String(32), index=True, nullable=True)     favor_id = Column(Integer, ForeignKey("favor.nid"))  #建立外键     # 与生成表结构无关,仅用于查询方便     favor = relationship("Favor", backref='pers')  #更方便查询,语句的意思是person关联Favor,反过来
 
  # 多对多 class ServerToGroup(Base):     __tablename__ = 'servertogroup'     nid = Column(Integer, primary_key=True, autoincrement=True)     server_id = Column(Integer, ForeignKey('server.id'))     group_id = Column(Integer, ForeignKey('group.id'))     group = relationship("Group", backref='s2g')     server = relationship("Server", backref='s2g')
  class Group(Base):     __tablename__ = 'group'     id = Column(Integer, primary_key=True)     name = Column(String(64), unique=True, nullable=False)     port = Column(Integer, default=22)     # group = relationship('Group',secondary=ServerToGroup,backref='host_list')
 
  class Server(Base):     __tablename__ = 'server'
      id = Column(Integer, primary_key=True, autoincrement=True)     hostname = Column(String(64), unique=True, nullable=False)
 
 
 
  def init_db():     Base.metadata.create_all(engine)
 
  def drop_db():     Base.metadata.drop_all(engine)
 
  #创建session对象,实现增删改查 Session = sessionmaker(bind=engine) session = Session()
   |