• python模块-----sqlAlchemy


    什么是ORM?

    sqlAlchemy是python中最著名的ORM(Object Relationship Mapping)框架了。

    一句话解释的话就是,一种可以把model中的模型和数据库中的一条数据相互转换的工具。

    连接数据库,利用数据库字符串构造engine

    engine = sqlalchemy.create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')

    基础用法

    1、基本查询

    # coding=UTF-8
    import sqlalchemy
    
    engine = sqlalchemy.create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')
    
    with engine.connect() as conn:
        # 最基础的用法
        result = conn.execute("select User from mysql.user; ")
        for item in result:
            print(item)
    

    2、常用操作

    在test数据库中,创建user表。sql如下

    create table user (id varchar(20) primary key, name varchar(20))
    

     CRUD(Create Read Update Delete, 增查改删)

    在sqlAlchemy中,增删改查操作是通过一个session对象(DBSession,是由sessionmaker创建的)来完成的。
    所以,我们需要创建session。
    # 创建DBSession类型
    DBSession = sessionmaker(bind=engine)
    

    在此基础之上我们就能进行增删改查的操作了。先从增加开始。

    # 创建Session对象
    session = DBSession()
    # 创建User对象
    new_user = User(id='1', name='Bob')
    # 添加到session
    session.add(new_user)
    # 提交
    session.commit()
    # 关闭session
    session.close()
    

     还有查询

    # 创建session
    session = DBSession()
    # 利用session创建查询,query(对象类).filter(条件).one()/all()
    user = session.query(User).filter(User.id=='1').one()
    print('type:{0}'.format(type(user)))
    print('name:{0}'.format(user.name))
    # 关闭session
    session.close()
    

     要多一步,就是要先根据筛选条件拿到要更改的对象,然后给对象赋值,再次提交(commit)即可。

    # 更新
    session = DBSession()
    user_result = session.query(User).filter_by(id='1').first()
    user_result.name = "jack"
    session.commit()
    session.close()
    

     删除操作

    # 删除
    session = DBSession()
    user_willdel = session.query(User).filter_by(id='5').first()
    session.delete(user_willdel)
    session.commit()
    session.close()
    

     代码整合

    # coding=UTF-8
    
    # 导入依赖
    from sqlalchemy import Column, String, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    # 创建对象的基类
    Base = declarative_base()
    
    # 定义User对象
    class User(Base):
        # 表的名字
        __tablename__ = 'user'
    
        # 表的结构
        id = Column(String(20), primary_key=True)
        name = Column(String(20))
    
    
    #初始化数据库连接
    engine = create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')
    
    # 创建DBSession类型
    DBSession = sessionmaker(bind=engine)
    
    # 添加
    # 创建Session对象
    session = DBSession()
    # 创建User对象
    new_user = User(id='5', name='Bob')
    # 添加到session
    session.add(new_user)
    # 提交
    session.commit()
    # 关闭session
    session.close()
    
    
    # 查询
    # 创建session
    session = DBSession()
    # 利用session创建查询,query(对象类).filter(条件).one()/all()
    user = session.query(User).filter(User.id=='5').one()
    print('type:{0}'.format(type(user)))
    print('name:{0}'.format(user.name))
    # 关闭session
    session.close()
    
    
    # 更新
    session = DBSession()
    user_result = session.query(User).filter_by(id='1').first()
    user_result.name = "jack"
    session.commit()
    session.close()
    
    
    # 删除
    session = DBSession()
    user_willdel = session.query(User).filter_by(id='5').first()
    session.delete(user_willdel)
    session.commit()
    session.close()
    


  • 相关阅读:
    8.3学习日志
    8.2学习日志
    8.1学习日志
    Chapter 2
    未命名 1
    pugixml
    C++使用Json作为数据包装格式的通信
    项目FAQ
    xcode语法高亮插件
    【转】jsoncpp在xcode中的使用
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/13470866.html
Copyright © 2020-2023  润新知