参数化

Posted jyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参数化相关的知识,希望对你有一定的参考价值。

  • sql语句的参数化,可以有效防止sql注入
  • 注意:此处不同于python的字符串格式化,全部使用%s占位

from pymysql import *

def main():

    find_name = input("请输入物品名称:")

    # 创建Connection连接
    conn = connect(host=‘localhost‘,port=3306,user=‘root‘,password=‘mysql‘,database=‘jing_dong‘,charset=‘utf8‘)
    # 获得Cursor对象
    cs1 = conn.cursor()


    # # 非安全的方式
    # # 输入 " or 1=1 or "   (双引号也要输入)
    # sql = ‘select * from goods where name="%s"‘ % find_name
    # print("""sql===>%s<====""" % sql)
    # # 执行select语句,并返回受影响的行数:查询所有数据
    # count = cs1.execute(sql)

    # 安全的方式
    # 构造参数列表
    params = [find_name]
    # 执行select语句,并返回受影响的行数:查询所有数据
    count = cs1.execute(‘select * from goods where name=%s‘, params)
    # 注意:
    # 如果要是有多个参数,需要进行参数化
    # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可 

    # 打印受影响的行数
    print(count)
    # 获取查询的结果
    # result = cs1.fetchone()
    result = cs1.fetchall()
    # 打印查询的结果
    print(result)
    # 关闭Cursor对象
    cs1.close()
    # 关闭Connection对象
    conn.close()

if __name__ == ‘__main__‘:
    main()

以上是关于参数化的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

如何在 python 中并行化以下代码片段?

片段事务中的实例化错误

SQL预编译中order by后为什么不能参数化原因

为啥保守光栅化无法为某些三角形调用片段着色器?

Firebase Storage StorageTask Class 参数化类“StorageTask”的原始使用