SQLAlchemy对数据库的增删改查操作

创建指定的数据库表:

1from sqlalchemy.ext.declarative import declarative_base 2from sqlalchemy import Column,Integer,String,create_engine 3 4#创建一个orm模型基类 5Base=declarative_base() 6 7class User(Base): 8 __tablename__="user" 9 id=Column(Integer,primary_key=True,autoincrement=True) 10 name=Column(String(32),index=True) 11 12#创建数据库连接 13engine=create_engine("mysql+pymysql://root:1234@127.0.0.1:3306/lgweb?charset=utf8") 14 15#调用engine 创建所有继承base类的数据表类 16Base.metadata.create_all(engine)

对数据库中表数据的添加及批量添加操作:

1from creat_table import engine,User 2from sqlalchemy.orm.session import sessionmaker 3 4#创建指定数据库会话 5Session=sessionmaker(engine) 6#打开会话窗口 7db_session=Session() 8 9# user_obj=User(name="tom") 10# user1=User(name="lisa") 11 12#相当于insert into 13# db_session.add(user_obj) 14# db_session.add(user1) 15db_session.add_all([ 16 User(name="婉君"),User(name="小芬"),User(name="程洁"),User(name="思宇") 17]) 18#提交数据 19db_session.commit() 20 21db_session.close()

单表查询:

1from creat_table import engine,User 2from sqlalchemy.orm.session import sessionmaker 3 4Session=sessionmaker(engine) 5db_session=Session() 6 7# user_list=db_session.query(User).filter(User.id>=4).all() 8user_list=db_session.query(User).filter_by(id>=4).all() 9for user in user_list: 10 print(user.id,user.name)

更新数据:

1from creat_table import engine,User 2from sqlalchemy.orm.session import sessionmaker 3 4Session=sessionmaker(engine) 5db_session=Session() 6 7db_session.query(User).filter_by(name="小芬").update({"name":"晓晓"}) 8db_session.commit()

删除数据:

1from creat_table import engine,User 2from sqlalchemy.orm.session import sessionmaker 3 4Session=sessionmaker(engine) 5db_session=Session() 6 7ret=db_session.query(User).filter_by(id="2").delete() 8print(ret) 9db_session.commit() 10db_session.close()

************************************************************************************************************************

多表关联:主外键关联

1from sqlalchemy.ext.declarative import declarative_base 2from sqlalchemy.engine import create_engine 3from sqlalchemy.orm.session import Session 4from sqlalchemy.orm import relationship 5from sqlalchemy import Column,Integer,String,ForeignKey 6 7#创建一个数据表的继承基类 8Base=declarative_base() 9#创建一个数据库连接 10engine=create_engine("mysql+pymysql://root:root1234@127.0.0.1:3306/db_unv?charset=utf8") 11#创建一个会话 12db_session=Session(engine) 13 14 15 16class Student(Base): 17 __tablename__="student" 18 id=Column(Integer,primary_key=True) 19 name=Column(String(32),index=True) 20 school_id=Column(Integer,ForeignKey("school.id")) #外键 21 stu2sch=relationship("School",backref='sch2stu') # school反向解析student关键字 22 23 24class School(Base): 25 __tablename__="school" 26 id = Column(Integer, primary_key=True) 27 name = Column(String(32), index=True) 28 29Base.metadata.create_all(engine)

多表的数据添加:

1from creat_table import engine,School,Student 2from sqlalchemy.orm.session import sessionmaker 3 4session=sessionmaker(engine) 5db_session=session() 6 7# stu_obj=Student(name="凯文",stu2sch=School(name="麻省理工")) #反向添加数据 8sch_obj=School(name="常青藤大学",sch2stu=[Student(name="胡柯"),Student(name="徐素")]) #正向添加 9 10 11# db_session.add(stu_obj) 12db_session.add(sch_obj) 13db_session.commit() 14db_session.close()

多表数据的更新和删除:

1from creat_table import School,Student,engine 2from sqlalchemy.orm.session import sessionmaker 3 4Session=sessionmaker(engine) 5db_session=Session() 6 7# stu_obj=db_session.query(Student).filter(Student.name=="徐菲菲").first() 8# print(stu_obj.school_id) 9# 10# db_session.query(Student).filter(Student.id==stu_obj.id).update({"school_id":2}) 11sch_obj=db_session.query(School).filter(School.name=="麻省理工").first() 12# ret=db_session.query(Student).filter(Student.school_id==sch_obj.id).update({"school_id":3}) 13db_session.query(Student).filter(Student.school_id==sch_obj.id).delete() 14 15db_session.commit() 16 17db_session.close()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java修道之路,问鼎巅峰,我辈代码修仙法力齐天

<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav

SQLAlchemy对数据库的增删改查操作 - HelloWorld