sqlalchemy的基本操作

表结构如下:

from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative importdeclarative_basefrom sqlalchemy import Column,String,Integerfrom sqlalchemy.orm importsessionmaker engine = create_engine("mysql+mysqlconnector://root:123456@127.0.0.1:3306/data",encoding='utf8') Base = declarative_base() # 生成ORM基类# 建立表结构class Student(Base):    __tablename__ = 'student'    id = Column(Integer,primary_key=True)    name = Column(String(32))    gender = Column(String(32))    email = Column(String(64)) Session_class = sessionmaker(bind=engine)# 创建一个session对象session = Session_class()

数据库中的数据,如图

image

1.查询并返回第一条数据
data = session.query(Student).filter_by(id=1).first()print(data)

image

咦,返回的怎么是一个obj对象,这我们怎么知道它是谁。那我们需要看到它对应的值,应该怎么做,
很简单,调用对应的参数就能显示对应的值

print(data.id,data.name,data.gender,data.email)

image

2.查询多条or所有数据
不带条件查询所有数据
data = session.query(Student).all()print(data) all() 默认返回的是一个内存对象的列表,而内存对象不能很直观的告诉我们
数据是谁的?当我们想要看到更直观的数据时,有没有什么解决方法呢?
当然有,于是聪明的程序员就想出来了下面的方法

image

重写repr函数,使返回值更加清晰的显示

image

image

带条件查询:
   data = session.query(Student).filter_by(id=1,name="狗蛋").all()    print(data)

image

多条件查询:
   data = session.query(Student).filter(Studet.id>=1).filter(Student.gender=="中").all()    print(data) 总结:
       filter_by:  用于赋值条件查询
       filter:     用于判断条件查询

image

3.修改单条数据
data = session.query(Student).filter_by(id=1).first()# 修改前print(data.gender)
data.gender = "男和女"# 修改后print(data.gender)# 最后提交session.commit()
4.批量修改数据
# 修改前data = session.query(Student).filter(Student.id>=1).all()print(data)# 修改后session.query(Student).filter(Student.id>=1).update({Student.name:'麒麟狗'})print(data)# 最后提交session.commit()

image

5.添加数据
# 增加前data = session.query(Student).filter(Student.id>=1).all()print(data)# 修改后s_obj = Student(name='小呆',gender='男',email='10000@qq.com')
session.add(s_obj)# 此时还没有添加到数据库print(data)# 最后提交session.commit()# 这时候数据才真正添加data = session.query(Student).filter(Student.id>=1).all()print(data)

image

image

6.批量增加数据
# 增加前data = session.query(Student).filter(Student.id>=1).all()print(data)# 修改后lis = []for i in range(10):
   s_obj = Student(name='小呆'+str(i),gender='男',email='10000%s@qq.com'%i)
   lis.append(s_obj)
session.add_all(lis)# 此时还没有添加到数据库print(data)# 最后提交session.commit()# 这时候数据才真正添加data = session.query(Student).filter(Student.id>=1).all()print(data)

image

image

7.删除数据
# 删除前data = session.query(Student).filter(Student.id>=1).all()print(data)# 删除后session.query(Student).filter_by(id=1).delete()# 此时还没有添加到数据库print(data)# 最后提交session.commit()# 这时候数据才真正删除data = session.query(Student).filter(Student.id>=1).all()print(data)

删除多条数据与增加雷同,就不做介绍了

image

image

8.回滚
data = session.query(Student).filter(Student.id>=1).all()print(data)

s = Student(name='胖毛')
session.add(s) data = session.query(Student).filter(Student.id>=1).all()print(data)# 回滚session.rollback()

image

image

SQLalchemy的增删查改就介绍到这里为止了。

sqlalchemy操作数据库(二)的更多相关文章

  1. python 连接操作数据库(二)

    一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...

  2. Python3.x:SQLAlchemy操作数据库

    Python3.x:SQLAlchemy操作数据库 前言 SQLAlchemy是一个ORM框架(Object Rational Mapping,对象关系映射),它可以帮助我们更加优雅.更加高效的实现数 ...

  3. SqlAlchemy操作(二)

    SQLALchemy初始化链接数据库 1. 数据库配置. https://www.cnblogs.com/mengbin0546/p/10124560.html 2.  python端操作. 一.  ...

  4. 04:sqlalchemy操作数据库

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  5. 04:sqlalchemy操作数据库 不错

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  6. python如何用sqlalchemy操作数据库

    工具:mysql  python sqlalchemy ---------------------------------------- 准备工作: 1.安装mysql 如果是window环境请参考 ...

  7. SQLAlchemy 操作数据库

    首先安装 SQLAlchemy install PyMySQL install sqlalchemy 代码: #!/usr/bin/env python # encoding: utf-8 " ...

  8. 13、Flask实战第13天:SQLAlchemy操作MySQL数据库

    安装MySQL 在MySQL官网下载win版MySQL 双击运行 后面根据提示设置密码然后启动即可,这里我设置的密码是:123456 我们可以通过Navicat客户端工具连接上MySQL addres ...

  9. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

随机推荐

  1. Android 开发工具下载中文网站

    Android官方网站(develop.android.com)因为被墙而无法访问.这时可以访问中文网址: http://wear.techbrood.com/ SDK Manager 代理及安装文件 ...

  2. 9款最佳的Linux文件比较工具

    程序员和撰稿人在编写程序文件或平常的文本文件时,有时想知道两个文件或同一文件的两个版本之间的差异.你在Linux上比较两个计算机文件时,文件内容之间的差异就叫diff.这一描述来源于提到diff的输出 ...

  3. Python学习---列表,元组,字典

    ### 列表 list = [1,2,3,4,5,6] list.append(7) print(list) ===>>> [1, 2, 3, 4, 5, 6, 7] list[2] ...

  4. 【python】vscode python环境配置

    安装python插件:ext install python 配置flake8:pip install flake8 配置yapf:pip install yapf(在VScode中按Alt+Shift ...

  5. 【CF248E】Piglet's Birthday(动态规划)

    [CF248E]Piglet's Birthday(动态规划) 题面 洛谷 CodeForces 翻译: 给定\(n\)个货架,初始时每个上面有\(a[i]\)个蜜罐. 有\(q\)次操作,每次操作形 ...

  6. bzoj1683[Usaco2005 Nov]City skyline 城市地平线

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1683 Input 第1行:2个用空格隔开的整数N和W. 第2到N+1行:每行包括2个用空格 ...

  7. 【ARC068F】Solitaire

    Description ​ 你有一个双端队列和 \(N\) 个数字,先按 \(1\) 到 \(N\) 的顺序每次从任意一端插入当前数字,再进行 \(N\) 次操作每次可以从两端弹出,求有多少种弹出序列 ...

  8. 【Learning】积性函数前缀和——洲阁筛(min_25写法)

    问题描述 洲阁筛解决的问题主要是\(n\)范围较大的积性函数前缀和. ​ 已知一积性函数\(f(i)\),求\(\sum_{i=1}^nf(i)\). \(n\leq10^{12}\). 求解方法 如 ...

  9. 【bzoj1483】 HNOI2009—梦幻布丁

    http://www.lydsy.com/JudgeOnline/problem.php?id=1483 (题目链接) 题意 $n$个布丁摆成一行,进行$m$次操作.每次将某个颜色的布丁全部变成另一种 ...

  10. Java的基本类型

    基本数据类型的加载和存储 极客时间深入理解Java虚拟机读后感,有错误还请指正 虚拟机中的Boolean类型 在Java语言规范中,boolean类型的值只有两种可能,那就是"true&qu ...