from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
#创建base类
Base = declarative_base()
#设计表和字段
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(20))
password = Column(String(20))
def __repr__(self):
return f'User {self.name}'
def get_session(quary):
def get():
#在执行前实现某部分功能
print('start')
engine = create_engine('mysql+pymysql://root:root@192.168.80.172:3306/test', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
#执行原函数
re = quary(session)
#在执行后实现某部分功能
print('end')
print('end',re)
return re
return get
# print(get_session())
#装饰器装饰,不改变原码的情况下来实现功能
@get_session
def quary(se:str):
try:
print(se.query(User).first())
print(se.query(User).filter(User.password == "1231").all())
se.query(User).filter(User.password == "python").all()
vars = [1,2,3]
return vars
# 若报错, 发生异常则进行回滚
except Exception as e:
se.rollback()
a = quary()
print(a)
python装饰器,通过sqlachemy处理数据库数据
于 2024-07-05 21:09:03 首次发布