sqlalchemy------操作表(增删查改)

第一步:创建engine对象     连接数据库

engine = create_engine(
    "mysql+pymysql://root:[email protected]:3306/db001?charset=utf8",
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=5,  # 连接池大小
    pool_timeout=30,  # 池中没有线程最多等待的时间,否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)

操作表中得数据

 第二步:得到一个session对象---》不是flask的session---》会话---》链接

Session = sessionmaker(bind=engine)# 把引擎传入
session = Session() # 得到session对象

利用session去操作表

1.创建一条数据

user=User(name='lqz',email='[email protected]')
# # 保存到数据库
session.add(user)
session.commit()  # 提交事务
session.close() #关闭会话

创建数据时,一定要session.commit()提交事务,session.add(user)   add()是创建一条数据,若要一次创建多条数据需要用到add_all()

hobby = Hobby()
hobby1 = Hobby(caption='足球')
hobby2 = Hobby(caption='乒乓球')

session.add_all([hobby,hobby1,hobby2])

add_all()里面用列表将添加的对象放入

2.查数据

filter传的是表达式,filter_by传的是参数

all()  出来的是列表---》不是qs对象,没有这个东西
拿单条 .first()

select * from User where User.id>2 limit 1;
res=session.query(User).filter(User.id>2).first()
res=session.query(User).filter(User.name=='lqz').all()
res=session.query(User).filter_by(id=3).all()
res=session.query(User).filter_by(name='lqz').all()

3.删除数据

delete * from User where id >6;
res = session.query(User).filter(User.id >= 6).delete()
print(res)  # 影响的行数

 不能删除,没有方法
user=session.query(User).filter(User.id == 5).first()
user.delete()  # 它没有单独删对象的

4.修改

# res=session.query(User).filter(User.id > 0).update({"name" : "lqz"})
#类似于django的F查询
session.query(User).filter(User.id > 0).update({User.name: User.name + "099"}, synchronize_session=False) # 字符串相加
session.query(User).filter(User.id > 0).update({"age": User.age + 1}, synchronize_session="evaluate") # 数字相加
# 查到单个对象,修改属性--》add增加进去---》修改?   add 只要有id,就是修改
res=session.query(User).filter(User.id == 1).first()
# print(res)
res.name='yyyy'
session.add(res)

你可能感兴趣的:(flask,开发语言,flask)