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

时间:2010-03-11 11:37:25

标签: python mysql prepared-statement

MySQLdb是否支持服务器端prepared statements?我无法从手册中弄清楚这一点。

2 个答案:

答案 0 :(得分:17)

检查MySQLdb Package Comments

  

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

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

答案 1 :(得分:13)

它有某种参数化,yes

即便如此,我建议您切换到oursql。它使a lot of advantages超过MySQLdb:

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