0

我正在用 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(keys) 纳入变量还是一项O(1)操作)
  • 内部是否有多个 for 循环运行?a.keys()是返回密钥的深层副本还是只是一个参考?
4

1 回答 1

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 参数并让数据库有机会为您准备语句。但是,它们使用不同的语法,通常是规范中命名的一个或两个变体。

于 2013-02-11T18:53:40.013 回答