使用ORM映射指定的别名,而不是直接使用原始列名,以避免SQL注入攻击。示例如下:
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
password = Column(String)
@classmethod
def authenticate(cls, session, name, password):
"""验证用户身份"""
user = session.query(cls).filter_by(name=name).first()
if user and user.password == password:
return user
else:
return None
在此示例中,我们在查询中使用了filter_by()
方法,该方法取一个类属性并使用ORM映射查找其对应的列名。这样,ORM将确保在执行SQL查询时使用指定的查询参数,从而避免SQL注入攻击。