python ORM模块sqlalchemy的使用

一、安装sqlalchemy

pip install sqlalchemy

二、导入必要的包及模块

import sqlalchemy
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker

三、建立数据库链接实例

#建立数据库链接实例(#"数据库类型+数据库模块://用户名:密码@主机/库名")
    db=sqlalchemy.create_engine("mysql+pymysql://root:q1q1q1@localhost/a")

四、建立一个元类的继承类

base = declarative_base(db)

五、定义一个表(使用类)继承base

class Student(base):
        __tablename__ = "student"
        id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
        name = sqlalchemy.Column(sqlalchemy.String(32))
        age = sqlalchemy.Column(sqlalchemy.String(32))

六、建立表

base.metadata返回sqlalchemy.schema.MetaData对象,它是全部Table对象的集合,调用create_all()该对象会触发CREATE TABLE语句,若是数据库还不存在这些表的话。python

if __name__ == "__main__":
        base.metadata.create_all(db)

脚本运行前a数据库中的表:
在这里插入图片描述
运行上述代码以后,a数据库表:
在这里插入图片描述mysql

七、绑定链接并建立session

cursor = sessionmaker(bind=db) #获得的时一个类
    
    session = cursor() #实例

八、增(插入数据)

①插入一条数据web

stu = Student(
        id = 1,
        name = "张1",
        age = 18
    )
    session.add(stu)
    session.commit()

在这里插入图片描述
②同时插入多条数据sql

session.add_all([
        Student(id=2,name="张2",age=19),
        Student(id=3,name="张3",age=20)
    ])
    session.commit()

在这里插入图片描述

九、查询

①查询全部数据数据库

all_data = session.query(Student).all()#获得的是一个可迭代对象
    for data in all_data:
        print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

在这里插入图片描述

②根据条件查询多条数据session

many_data = session.query(Student).filter_by(age=18)
    print(many_data)#实际是一个sql查询语句,其仍是一个存储一个对象的带迭代内容
    for data in many_data:
        print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

在这里插入图片描述
还能够经过序列解包的方式获取数据ide

many_data = session.query(Student).filter_by(age=18)
    data, = many_data
    print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

③查询一条数据svg

data = session.query(Student).get(ident=3) #查一条,只能以主键查
    print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

十、删除

#先查询一条
    data = session.query(Student).get(ident=3)
    #而后删除
    session.delete(data)
    #而后提交操做
    session.commit()

在这里插入图片描述

十一、修改

# 先查询一条
   data = session.query(Student).get(ident=2)
    #而后删除
   data.name = "老李头"
    #而后提交操做
   session.commit()

在这里插入图片描述

相关文章
相关标签/搜索