是否有Python MySQL API返回准备好的语句以供重用?

是否有Python MySQL API返回准备好的语句以供重用?,python,mysql,postgresql,prepared-statement,Python,Mysql,Postgresql,Prepared Statement,对于连续执行,也不允许返回由参数填充。还有其他的吗 至少对于.executemany()而言,我们的SQL似乎比MySQLdb更为熟练,因为SQL语句只为所有提交的值准备了一次 (Python是否支持使用PostgreSQL准备和重复使用准备好的语句?对于您的PostgreSQL问题,答案是至少在去年10月,还没有特定于Python的方法来处理准备好的语句(我不是Python程序员,但这在各种语言中相当常见)。然而,PostgreSQL提供了一种SQL语言方法来实现这一点,因此,如果可以执行SQ

对于连续执行,也不允许返回由参数填充。还有其他的吗

至少对于
.executemany()
而言,我们的SQL似乎比MySQLdb更为熟练,因为SQL语句只为所有提交的值准备了一次


(Python是否支持使用PostgreSQL准备和重复使用准备好的语句?

对于您的PostgreSQL问题,答案是至少在去年10月,还没有特定于Python的方法来处理准备好的语句(我不是Python程序员,但这在各种语言中相当常见)。然而,PostgreSQL提供了一种SQL语言方法来实现这一点,因此,如果可以执行SQL查询,任何语言都可以使用准备好的语句。有关如何在Python中执行此操作的代码示例,请参见

不过有几个主要的警告。其中之一是准备好的语句在第一次运行时就被计划好了,并且计划被重复使用。这对于统一需要相同计划(例如,简单插入)的查询非常有效,但会导致参数可能发生足够大的变化,从而可能需要新计划的问题。因此,在大多数情况下,以下几点可能没问题(仍有一些棘手的情况需要注意):

  • 插入foo(bar)值($1)
  • 从foo中选择*bar=$1假设条形图是主键
  • 以下情况可能不安全:

  • 从foo中选择*WHERE bar<$1
  • SELECT*FROM foo,其中baz=$1

  • 更好完全是主观的。我认为PostgreSQL通常更好,但MySQL确实擅长一些事情。删除主观的“更好”而不是预先准备好的语句支持