我在查询之外有dict和变量。我使用插值 像这样的绑定变量:
self.cur.execute("""
INSERT INTO
items (sku, external_id, url, price, in_stock, title, created_at)
VALUES
(%(sku)s, %(external_id)s, %(url)s, %(price)s, %(in_stock)s, %(title)s, now()) RETURNING id
""", item)
现在我想添加额外的字段来查询哪个不在对象中,而是在之前计算的变量,如下所示:
retailer_id = self.retailer_ids[item.name] # <- here we go!
self.cur.execute("""
INSERT INTO
items (sku, external_id, url, price, in_stock, title, created_at, retailer_id)
VALUES
(%(sku)s, %(external_id)s, %(url)s, %(price)s, %(in_stock)s, %(title)s, now(), %s) RETURNING id
""", (item, retailer_id,))
但它不起作用。我尝试了很多方法,但没有一种方法可以工作。
所以我决定解决方法,将我的对象转换为dict并手动添加zeroiler_id,如下所示:
retailer_id = self.retailer_ids[item.name]
item_dict = dict(item)
item_dict['retailer_id'] = retailer_id
try:
self.cur.execute("""
INSERT INTO
items (sku, external_id, url, price, in_stock, title, created_at, retailer_id)
VALUES
(%(sku)s, %(external_id)s, %(url)s, %(price)s, %(in_stock)s, %(title)s, now(), %(retailer_id)s) RETURNING id
""", item_dict)
显然,它正在发挥作用。
现在我很好奇,是否可以使用dict + variable或两个dicts撰写查询。
答案 0 :(得分:1)
不,不是
在此处插入其他29个字符。