psycopg2使用dict dict dict 变量将变量绑定到插入查询中



我在查询之外具有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个字符。

最新更新