吴贺华 发表于 2017-7-2 16:52:45

python学习之路

from sqlalchemy.ext.declarative import declarative_base  from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index

  from sqlalchemy.orm import sessionmaker,>  from sqlalchemy import create_engine
  engine = create_engine("mysql+pymysql://tuocigaoshou:Eb^BEF38E9FBC36CA775@111.204.117.99:3306/test", max_overflow=5)
  Base = declarative_base()
  # 创建单表
  class Users(Base):# 必须继承Base类
  __tablename__ = 'users'   # 表名
  # 创建三列数据
  id = Column(Integer, primary_key=True)      # primary_key 主键,自增ID
  name = Column(String(32))
  extra = Column(String(16))
  # 联合索引
  __table_args__ = (
  UniqueConstraint('id', 'name', name='uix_id_name'),
  Index('ix_id_name', 'name', 'extra'),
  )
  # 一对多
  class Favor(Base):
  __tablename__ = 'favor'
  nid = Column(Integer, primary_key=True)   # primary_key 主键,自增ID
  caption = Column(String(50), default='red', unique=True)    # unique唯一约束
  class Person(Base):
  __tablename__ = 'person'
  nid = Column(Integer, primary_key=True)   # primary_key 主键,自增ID
  name = Column(String(32), index=True, nullable=True)
  favor_id = Column(Integer, ForeignKey("favor.nid"))   # 外键
  # 多对多
  class Group(Base):
  __tablename__ = 'group'
  id = Column(Integer, primary_key=True)
  name = Column(String(64), unique=True, nullable=False)
  class Server(Base):
  __tablename__ = 'server'
  id = Column(Integer, primary_key=True, autoincrement=True)
  hostname = Column(String(64), unique=True, nullable=False)
  port = Column(Integer, default=22)
  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'))
  # Base.metadata.create_all(engine)    # 创建表,会执行Base类的所有子类创建所有表
  # Base.metadata.drop_all(engine)      # 删除表,会执行Base类的所有子类删除所有表
页: [1]
查看完整版本: python学习之路