python 按字段查询数据库
1
@classmethod
def query_by_index(cls, cursor, table_name, sql):cursor.execute(sql)return cursor.fetchall()
2 直接在SQL语句中f-string来插入参数 会增加SQL注入的风险
您可以直接在SQL语句中使用f-string来插入参数,但这样做可能会增加SQL注入的风险。如果
instId
参数来自不可信的源,那么恶意的输入可能会破坏SQL查询的结构并执行非预期的命令。这就是为什么我们通常建议使用参数化查询,即使用占位符(如%s)并将参数作为元组传递给
cursor.execute()
方法。这样,数据库驱动程序将负责正确地转义参数,从而避免SQL注入攻击。但是,如果您完全控制
instId
的值,并且确保它是安全的,那么可以直接在SQL语句中插入参数。
@classmethod
def query_by_instId(cls, cursor, table_name, instId):cursor.execute(f"SELECT * FROM {table_name} WHERE instId = '{instId}'")return cursor.fetchall()
3 execute (instId,) 元组参数 %s 避免sql攻击
@classmethod
def query_by_instId(cls, cursor, table_name, instId):cursor.execute("SELECT * FROM {table_name} WHERE instId = %s".format(table_name=table_name), (instId,))return cursor.fetchall()