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()
 



 

 

  

原文地址:https://www.cnblogs.com/xzcvblogs/p/11048035.html