Python dict:创建一个准备好的语句

时间:2013-02-11 18:38:42

标签: python postgresql dictionary prepared-statement

我正在python中编写一个网站,我需要使用PostgreSQL作为我的数据库。 我想创建一个用于更新表的预准备语句,我尝试将set创建为:

a=dict(b=3, c='d', x=10)
keys=a.keys()
print ",".join([keys[i] + "=$" + str(i + 1) for i in range(0, len(keys))])

此输出为

x=$1,c=$2,b=$3

可用于生成准备好的更新语句。

我想知道:

  • 对此有更好的选择吗?
  • 这是一项代价高昂的操作(应将len(键)置于变量中还是O(1)操作)
  • 内部有多个for循环吗? a.keys()是否会返回密钥的深层副本,还是只是一个引用?

1 个答案:

答案 0 :(得分:3)

你做得很好;我使用相同代码的稍微更易读的版本:

a=dict(b=3, c='d', x=10)
print ",".join(['{0}=${1}'.format(k, i) for i, k in enumerate(sorted(a))])

我对键进行了排序(词典没有固定的顺序)。

Python PostgreSQL数据库适配器遵循DBAPI v2.0规范,该规范支持使用SQL参数并为数据库提供为您准备语句的机会。但是,它们使用不同的语法,通常是规范中指定的一个或两个变体。