当前位置:  开发笔记 > 编程语言 > 正文

是否有可能使用Python标准库(比如2.5版)来执行参数化的MS-SQL查询?

如何解决《是否有可能使用Python标准库(比如2.5版)来执行参数化的MS-SQL查询?》经验,为你挑选了1个好方法。

虽然我现在使用的特定数据不是用户生成的,并且在我通常的验证例程中将在其生命的一英寸内进行消毒,但我想学习如何进行基本的INSERT,SELECT等. SQL查询同时保护自己免受SQL注入攻击,仅供将来参考.我宁愿学习如何通过参数化查询以"正确"的方式做事.

消毒总是很好,但我对可怜的黑客的可怜智慧进行了调整.手动逃避意味着我可能忽略了一些事情,因为黑名单不像白名单那样强大.为了进一步说明,我并不是说使用(%s)符号作为参数来传递可能已命名的字符串sqlstatement.我认为我需要知道的一个神奇的词是"绑定".

我也希望避免Python标准库之外的任何内容.

有问题的应用程序需要Microsoft SQL 2005,如果这是相关的.我正在使用ActiveState Python和模块dbi和odbc.由于这是Someone Else的数据库,因此存储过程已经完成.



1> vartec..:

PEP 249(DB API 2.0)定义了5个参数,PyMSSQL使用了paramstyle == pyformat.但它看起来像字符串插值,它实际上是绑定.

注意绑定之间的区别:

cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')

和插值(这是应该做的):

cur.execute('SELECT * FROM persons WHERE salesrep=%s' % 'John Doe')

另见http://wiki.python.org/moin/DbApiFaq


"我也希望避免Python标准库以外的任何内容."

你在这里运气不好.Python内置的唯一RDBMS驱动程序是SQLite.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有