我在查询之外具有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,然后手动添加零售商_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 变量或两个dicts撰写查询。
不,不是
在此处插入其他29个字符。