mysql学习总结(四)
1.SQLAIchemy介绍 SQLAlchemy是python编程下的一款ORM框架,该框架是建立在数据库API文档上,使用关系对象映射进行数据库操作,简言之便:将对象转换成sql,然后使用API并获取执行结果 2.SQLAIchemy安装 pip install SQLAlchemy 3.常用SQLAIchemy函数(python) #创建数据链接 MySQL-Python mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> #生成器,所有类都要继承它才能生成数据库语句 engine=create_engine("mysql+pymysql://root:xzc123456@127.0.0.1:3306/db1?charset=utf8",max_overflow=5,echo=True) Base = declarative_base() #创建一对一关系数据表 class Favor(Base): #创建数据库名 __tablename__='users #创建主键 id=Column(Integer,primary _key) Favor=Column(String(32),default='red',nuique=True) class person(Base): __tablename__='person' nid=Column(Integer,primary_key=True) name=Column(String(32),indef=True,nullable=True) favor_id=Column(Integer,Foreignkey('users.id')) #创建多对多 class server(Base): __tablename__='server' id=Column(Integer,primary_key=True,autoincrement=True) hostname=Column(String(32),unique=True,nullable=False) class Group(Base): __tablename__=group id=Column(Integer,primary_key=True) name=COlumn(String(32),unique=True,nullable=False) #设置默认值为22 port=Column(Integer,defalut=22) class serverToGrup(Base): __tablename__='servertogroup' id=Column(Integer,primary_key=True,autoiuncrement=True) #外键关联 server_id=Column(Interger,Foreignkey('server.id')) group_id=Column(Interger,Foreignkey('group.id')) group=relationship('Group',backref='s2g') server=relationship('Server',backref='s2g') #创建表 Base.metadata.create_all(engine) #删除表 Base.metadata.drop_all(engine) #操作表 Sessionmaker(bind=engine) session=Session() #增加一条数据 obj=server(name='alex') session.add(obj) #增加多条数据 session.add_all([ server(name='alex') server(name='alex1') server(name='alex2') server(name='alex3') ]) session.commit() #删除数据 session.query(server).filter(server.id==1).delete() session.commit() #修改数据 session.query(server).filter(server.id==2).update({"name":"axl"}) seesion.commit() #查询数据 ret=session.query(server).all() session.commit() #分页查询limit ret=session(server)[1:2] #排序 session.query(server).order_by(server.name.desc()).all() session.query(server).order_by(server.name.desc(),server.id.asc()).all() #分组 from sqlalchemy.sql import func ret=sseion.query(server).group_by(server.hostname).all() ret=session.query(func.max(server.id),func.min(server.id)).group_by(server.name).having(func,min(server.id)>2).all() #连表 res=session.query(server,Group).filter(server.id==Group.id).all() ret=session.query(serverToGrup).join(server).all() ret=session.query(serverToGrup).join(server,isouter=True).all()