sqlalchemy数据操作

来源:互联网 发布:访问服务器8080端口 编辑:程序博客网 时间:2024/06/06 07:49

sqlalchemy中操作数据主要是通过建立会话session

需要的两个基本条件:引擎,对象

引擎:远程数据库连接

对象:表结构类


首先,创建session会话,连接远程的数据库

sessionclass = sessionmaker(bind=engine)

不过这只是获取了session的类,还需要创建session实例

session = sessionclass()

通过sesson实例,就可以执行数据操作了


插入数据

godme = User(name='godme',password='godme')session.add(godme)session.commit()

通过定义的表结构类创建对象,添加入session,当commit提交时,自动吧数据写入指定表


删除数据

godme=User(name='godme',password='godme')session.delete(godme)session.commit()

同插入操作,直接对session进行操作,提交时自动写回数据库


查询数据

godme = session.query(User).filter_by(name='godme').all()
查询语法包括三部分:

指定查询表:第一位,通过query指定,传入表结构类自动关联

指定查询特征:参数传入完成限定操作

    1. 参数指定:通过filter_by完成参数传入,传入参数为表字段,只能指定,无法进行逻辑判断操作

    2. 参数实体比较:通过filter进行条件判定,传入参数为(User.id)表明加点加字段,可以当做实体直接进行逻辑判断,大于小于和in等判断

    3. 操作类型:可以进行排序,分组等一系列逻辑操作group_by()

    4. 多重条件:多个条件可以多次跟上filter方法,并填写条件限制

获取对象:查询结果为一个对象列表,first()会返回查询第一个结果,all()会全部返回

获取对象可以直接调用原来定义表结构类中方法,为了方便显示合一重写__repr__等常用方法


修改数据

在获取session连接时,其实session就相当于数据库了,对session的操作commit之后都会反映到数据库中

1. 获取修改:直接查询出实体,对实体进行修改

2. 替换修改:删除原有数据,添加修改数据


不论什么操作,都需要进行commit提交,否则不一定会写入数据库中,成为持久数据

同时,在缓存中的操作也可以进行撤销

session.rollback()
这样,对于没有进行commit的操作,都不会对数据库进行影响





原创粉丝点击