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