python sql语句占位符_Python数据库语句查询生成与占位符使用技巧的不解之处

直接通过 python的连接字符串生成查询语句,有可能会有sql注入的危险。

如果,只生成单条查询,注意点的话,连接字符串组合成查询语句,危险性大不大?好像应该也没什么问题

如果使用 “?”占位符的话,感觉很不灵活不方便。

比如,多个key

select * from table

select id,name from table

这里使用占位符,貌似不能这么用。

args= ('name','xxx')

c.execute('select * from stocks where ?=?', args)

还有生成查询语句比较好的实践应该是怎样的?

(字符串连接成查询语句,要带入的查询的值使用占位符??还是直接固定死了,尽量不要抽象话)

占位符的确不能对字段名使用,只能对值使用,但是你完全可以构建一个属于自己的这样子的函数。

python没写过,就用php来回答了,思路是一样的,应该能看懂吧。。。<?php

$arr = ['name1', 'value1', 'name2', 'value2'];

echo implode_where($arr);

function implode_where($conditions) {

$where = [];

$i = 0;

do{

$column = $conditions[$i];

$value = $conditions[$i+1]; //此处可以视情况作一些过滤,比如把'转义为\'

$where[] = "`{$column}`='{$value}'"; //将$conditions中每两个元素为一组组合起来

}while($i < count($conditions));

return join(',', $where); //然后用逗号把他们都拼起来

}

嗯,要注意的一点是上面这个函数并不是十分严谨,比如没有判断传入参数为空,或者条件个数是奇数个的情况,主要只是提供一个思路啦~

占位符只能在 VALUE 上使用 ... 表名和字段名都不能使用占位符 ...

换言之 ... 占位符必须不能影响 SQL 语句的构造 ...

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20209.html

相关文章 Recommend

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值