首先要导入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()