【发布时间】:2019-07-21 13:04:06
【问题描述】:
我希望将查询数据库所需的字符串格式化如下:
SELECT "field1", "field2" FROM "measurement" where "status"=0 AND "node"='name1' LIMIT 10
以下内容来自字典:
-
field1,field2 measurement-
node和name1 10
字典如下:
conf = {
'fields': ['field1', 'field2'],
'measurement': 'measurement',
'limit': 10,
'tags': {'node': 'name1'}
}
我可以将字符串格式化为字符串的一部分(没有tags),如下所示:
QUERY = 'SELECT "{}" FROM {} WHERE "status"=0 LIMIT {}'.format(
'","'.join(conf['fields'],
conf['measurement'],
conf['limit'])
这为我提供了:
SELECT "field1", "field2" FROM measurement WHERE "status"=0 LIMIT 10
问题
tags 中的键值对在许多情况下是动态的,即以前没有已知的key(在此示例中为node)
对于字符串:
QUERY = 'SELECT {} FROM {} WHERE "status"=0 AND "{}"=\'{}\' LIMIT {}
我希望动态填充字符串格式AND "{}"=\'{}\'(事先不知道tags中的键值对
我如何做到这一点?
我不确定:
QUERY = 'SELECT "{}" FROM {} WHERE "status"=0 AND "{}"=\'{}\' LIMIT {}'.format(
'","'.join(conf['fields']),
conf['measurement'],
**conf['tags'],
conf['limit']
)
会抛出以下SyntaxError:
SyntaxError: positional argument follows keyword argument unpacking
【问题讨论】:
-
你的
conf怎么样,能不能补充一下 -
已经添加:见
confdict -
@Shan-Desai 是
tags总是只有一个键值对? -
@Adam.Er8 对于初始情况是。
-
如果我们使用
""",您拥有的第一个字符串只能在 python 中表示,因为您在那里都有单引号和双引号,对吗?还有为什么你有"node"='name1'而不是node=name1?
标签: python python-3.x string string-formatting