SQLAlchemy 增删改查 一对一 多对多

首先要导入SQLAIchemy模块

from sqlalchemy.ect.declaative import  declarative_base

创建orm基类

Base = declarative_base()

创建orm对象

class User(Base):
    __tablename__ = "user"
    
    id = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(32),index=True)

创建数据库链接

from sqlalchemy import create_engine
ngine = create_engine("mysql+pymysql://root:[email protected]:3306/user?charset=utf8")
备注:pwd表示密码,如果数据库属性中没有密码的话可以忽略,user是数据库名
# 数据库链接创建完成
# 去数据库中创建与User所对应的数据库表
# 去engine数据库中创建继承Base类所对应的数据表
Base.metadata.create_all(engine)

#############################################################################################################################

添加数据

首先打开数据库链接

from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:[email protected]:3306/user?charset=utf8")

创建会话窗口---打开数据库链接

from sqlalchemy.orm import  sessionmaker

创建会话

Session = sessionmaker(engine)

打开会话窗口

db_session = Session()

添加单条数据

user_obj=  User(name="ywb")
db_session.add(user_obj)

添加多条数据

db_session.add_all([
    User(name="Alex"),
    User(name="Wusir"),
    User(name="Yuan")

])

开始执行操作

   db_session.commit()

执行完成之后关闭执行命令

db_session.close()

查询数据

 1 # 创建会话窗口
 2 from sqlalchemy.orm import sessionmaker
 3 from creat_table import engine,User
 4 
 5 Session = sessionmaker(engine)
 6 db_session = Session()
 7 
 8 
 9 # 简单的查询语句
10 user_list = db_session.query(User).all()
11 for row in user_list:
12     print(row.id,row.name)
13 
14 # 单条查询
15 user = db_session.query(User).first()
16 print(user.id,user.name)
17 
18 
19 # 带条件的查询
20 user_list = db_session.query(User).filter(User.id==4).all()
21 print(user_list[0].id,user_list[0].name)
22 
23 user = db_session.query(User).filter_by(id=3).first()
24 print(user.id,user.name)
25 
26 user_list = db_session.query(User).filter(User.id>=2).all()
27 for row in user_list:
28     print(row.id,row.name)
29 
30 
31 # 查询sql语句(拓展)
32 sql = db_session.query(User).filter(User.id>=2)
33 print(sql)
查询数据

修改更新数据

 1 #修改数据
 2 
 3 
 4 # 建立会话
 5 from sqlalchemy.orm import sessionmaker
 6 # 导入链接数据库的模块
 7 from creat_table import engine,User
 8 # 开始创建会话
 9 Session = sessionmaker(engine)
10 # 开启会话
11 db_session = Session()
12 
13 # 开始修改数据
14 res = db_session.query(User).filter(User.name=="ybw").update({"name":"哈哈哈"})
15 print(res)
16 
17 db_session.commit()
18 db_session.close()
修改更新数据

删除数据

 1 #删除数据
 2 
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 from creat_table import engine,User
 6 
 7 Session = sessionmaker(engine)
 8 db_session = Session()
 9 
10 
11 # 删除
12 
13 res = db_session.query(User).filter(User.id ==4 ).delete()
14 print(res)
15 
16 db_session.commit()
17 db_session.close()
删除数据

建立ForeignKey关系实现的增删改查

创建数据库

 1 #一对多操作
 2 
 3 
 4 from sqlalchemy.ext.declarative import declarative_base
 5 
 6 Base = declarative_base()
 7 
 8 from sqlalchemy import Column,String,Integer,ForeignKey
 9 from sqlalchemy.orm import relationship
10 
11 class Student(Base):
12     __tablename__ = "student"
13     id = Column(Integer,primary_key=True)
14     name = Column(String(32))
15     school_id = Column(Integer,ForeignKey("school.id"))
16 
17     stu2sch = relationship("School",backref = "sch2stu")
18 
19 class School(Base):
20     __tablename__ = "school"
21     id = Column(Integer,primary_key=True)
22     name = Column(String(32))
23 
24 
25 from sqlalchemy import create_engine
26 engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8")
27 Base.metadata.create_all(engine)
创建数据库

添加数据

 1 #   添加数据
 2 
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 from creat_table_ForeignKey import engine,Student,School
 6 
 7 Session = sessionmaker(engine)
 8 db_session = Session()
 9 
10 ## 添加数据   原始方法
11 sch_obj = School(name="OldBoyBeijing")
12 db_session.add(sch_obj)
13 db_session.commit()
14 sch = db_session.query(School).filter(School.name =="OldBoyBeijing").first()
15 stu_obj = Student(name="Yuan",school_id=sch.id)
16 db_session.add(stu_obj)
17 db_session.commit()
18 db_session.close()
19 
20 # 添加数据  反向添加 relationship
21 
22 sch_obj = School(name="OldBoyShanghai")
23 sch_obj.sch2stu = [Student(name="江疏影"),Student(name="周冬雨"),]
24 db_session.add(sch_obj)
25 db_session.commit()
26 db_session.close()
27 
28 
29 # 添加数据 正向添加   relationship
30 stu_obj = Student(name="大黄鸭",stu2sch = School(name="OldBoyShenzhen"))
31 db_session.add(stu_obj)
32 db_session.commit()
33 db_session.close()
添加数据

查询数据

 1 #   查询数据
 2 
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 from creat_table_ForeignKey import engine,Student,School
 6 
 7 Session = sessionmaker(engine)
 8 db_session = Session()
 9 
10 # #1.查询数据  正向查询数据  relationship
11 stu = db_session.query(Student).all()
12 for row in stu:
13     print(row.id,row.name,row.school_id,row.stu2sch.name)
14 
15 
16 # #1.查询数据  反向查询数据  relationship
17 
18 sch = db_session.query(School).all()
19 for school in sch:
20     for student in school.sch2stu:
21         print(school.id,school.name,student.name)
查询数据

 修改数据

 1 #   更新数据
 2 
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 from creat_table_ForeignKey import engine,Student,School
 6 
 7 Session = sessionmaker(engine)
 8 db_session = Session()
 9 
10 # 修改数据
11 
12 sch = db_session.query(School).filter(School.name=="OldBoyShanghai").first()
13 db_session.query(Student).filter(Student.name == "大黄鸭").update({"school_id":sch.id})
14 db_session.commit()
15 db_session.close()
修改数据

删除数据

 1 #   删除数据
 2 
 3 
 4 from sqlalchemy.orm import sessionmaker
 5 from creat_table_ForeignKey import engine,Student,School
 6 
 7 Session = sessionmaker(engine)
 8 db_session = Session()
 9 
10 # 删除数据
11 
12 sch = db_session.query(School).filter(School.name=="OldBoyShanghai").first()
13 db_session.query(Student).filter(Student.school_id == sch.id).delete()
14 db_session.commit()
15 db_session.close()
删除数据

猜你喜欢

转载自www.cnblogs.com/wqzn/p/10385673.html