当前位置:   article > 正文

sqlalchemy操作数据库(二)_sqlalchemy class

sqlalchemy class

sqlalchemy的基本操作

表结构如下:
fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemyimportColumn,String,Integerfromsqlalchemy.ormimportsessionmaker engine = create_engine("mysql+mysqlconnector://root:123456@127.0.0.1:3306/data",encoding='utf8') Base = declarative_base()# 生成ORM基类# 建立表结构classStudent(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()

数据库中的数据,如图

sqlalchemy操作数据库(二)

image

1.查询并返回第一条数据

data = session.query(Student).filter_by(id=1).first()print(data)

sqlalchemy操作数据库(二)

image

咦,返回的怎么是一个obj对象,这我们怎么知道它是谁。那我们需要看到它对应的值,应该怎么做,

很简单,调用对应的参数就能显示对应的值

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

sqlalchemy操作数据库(二)

image

2.查询多条or所有数据

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

sqlalchemy操作数据库(二)

image

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

sqlalchemy操作数据库(二)

image

sqlalchemy操作数据库(二)

image

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

sqlalchemy操作数据库(二)

image

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

sqlalchemy操作数据库(二)

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

sqlalchemy操作数据库(二)

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)

sqlalchemy操作数据库(二)

image

sqlalchemy操作数据库(二)

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)

sqlalchemy操作数据库(二)

image

sqlalchemy操作数据库(二)

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)
删除多条数据与增加雷同,就不做介绍了

sqlalchemy操作数据库(二)

image

sqlalchemy操作数据库(二)

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

sqlalchemy操作数据库(二)

image

sqlalchemy操作数据库(二)

image

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

 

如果你
①从事功能测试,想进阶自动化测试

②在测试界混了1、2年,依然不会敲代码

③面试大厂却屡屡碰壁

那下面的这些资料应该会对你有帮助

这份资料,对于【软件测试】的朋友来说应该是最全面最完整的备战资料,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,这些资料也陪伴了我的每一刻自学之路,希望也能帮助到你

关注公众号:程序员二黑,即可领取软件测试全套资料合集

还可以加入我们的学习交流群:785128166


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/927211
推荐阅读
相关标签
  

闽ICP备14008679号