python和sql_如何在Python中检查和执行SQL语句

我在Python中使用MySQLdb。我被告知要正确创建SQL语句并避免SQL注入攻击,我应该编写如下代码:sql = "insert into table VALUES ( %s, %s, %s )"

args = var1, var2, var3

cursor.execute( sql, args )

或:cursor.execute( "insert into table VALUES ( %s, %s, %s )", var1, var2, var3 )

或者甚至这个(这可能是错误的):header = ( 'id', 'first_name', 'last_name' )

values = ( '12', 'bob' , 'smith' )

cursor.execute( "insert into table ( %s ) values ( %s )", ( header + values ) )

当我用PHP编程时,我通常会将整个SQL语句存储为一个长字符串,然后执行该字符串。类似于(使用PostgreSQL):$id = db_prep_string( pg_escape_string( $id ) );

$first_name = db_prep_string( pg_escape_string( $first_name ) );

$last_name = db_prep_string( pg_escape_string( $last_name ) );

$query = "insert into table ( id, first_name, last_name ) values ( $id, $first_name, $last_name )"

$result = pg_query( $con, $query );

$retval = pg_fetch_array( $result );

其中db_prep_string是function db_prep_string( $value ) {

if(

!isset( $value ) ||

(is_null($value)) ||

preg_match( '/^\s+$/', $value ) ||

( $value == '' )

) {

$value = 'null';

}

else {

$value = "'$value'";

}

return $value;

}

然后为了调试,我可以简单地回显$query来查看整个SQL语句。我能用Python做些类似的事情吗?换句话说,我是否可以将safeSQL语句存储为字符串,打印出来进行调试,然后执行它?

我想做如下事情:id = prevent_sql_injection_string( id )

first_name = prevent_sql_injection_string( first_name )

last_name = prevent_sql_injection_string( last_name )

sql = "insert into table ( id, first_name, last_name ) values "

sql += id + ", "

sql += first_name + ", "

sql += last_name

print sql #for debugging

cursor.execute( sql )

如果不是,那么如何在Python中查看SQL语句的全部内容?

附加问题:如何使用Python在SQL语句中输入空值?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值