MySQLdb模块是否支持预处理语句?

pla*_*etp 11 python mysql prepared-statement

MySQLdb是否支持服务器端预处理语句?我无法从手册中弄清楚这一点.

Eug*_*ash 17

检查MySQLdb 包注释:

"参数化"是在MySQLdb中通过转义字符串然后盲目地将它们插入到查询中而不是使用MYSQL_STMT API来完成的.因此,unicode字符串必须经过两个中间表示(编码字符串,转义编码字符串)才能被数据库接收.

所以答案是:不,它没有.


nos*_*klo 13

它有一些参数化,是的.

即便如此,我建议你切换到oursql.它比MySQLdb 带来了很多好处:

  • oursql有真正的参数化.
  • oursql允许将文本或二进制数据流式传输到数据库并从数据库流出,而不是要求在客户端中缓存所有内容.
  • oursql可以懒惰地插入行并且懒惰地获取行.
  • oursql默认支持unicode.
  • oursql支持python 2.4到2.7,在2.6+上没有任何弃用警告(参见PEP 218),并且2.7没有完全失败(参见PEP 328).
  • oursql根据BSD许可证授权.