python ORM模块sqlalchemy的使用

系统 1461 0

1、安装sqlalchemy

          
                pip install sqlalchemy

          
        

2、导入必要的包及模块

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

          
        

3、创建数据库连接实例

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

4、创建一个元类的继承类

          
                base 
            
              =
            
             declarative_base
            
              (
            
            db
            
              )
            
          
        

5、定义一个表(使用类)继承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
            
            
              )
            
            
              )
            
          
        

6、创建表

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

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

脚本运行前a数据库中的表:
python ORM模块sqlalchemy的使用_第1张图片
运行上述代码之后,a数据库表:
python ORM模块sqlalchemy的使用_第2张图片

7、绑定连接并创建session

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

8、增(插入数据)

①插入一条数据

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

python ORM模块sqlalchemy的使用_第3张图片
②同时插入多条数据

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

python ORM模块sqlalchemy的使用_第4张图片

9、查询

①查询所有数据

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

python ORM模块sqlalchemy的使用_第5张图片

②根据条件查询多条数据

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

在这里插入图片描述
还可以通过序列解包的方式获取数据

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

③查询一条数据

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

10、删除

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

python ORM模块sqlalchemy的使用_第6张图片

11、修改

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

python ORM模块sqlalchemy的使用_第7张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论