Python Postgres-psycopg2.ProgrammingError:没有要获取的结果

Python Postgres-psycopg2.ProgrammingError:没有要获取的结果,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,一个小时以来我一直在做这件事。我是博士后的新手。在postgres中,CRUD操作过于繁琐。 我无法获取最新插入行的id 我在cur.execute()之后使用了cursor.fetchone()[0] 我的错误是:- Traceback (most recent call last): File "main.py", line 79, in <module> shipping_bill_id = cur.fetchone()[0] psycopg2.Program

一个小时以来我一直在做这件事。我是博士后的新手。在postgres中,CRUD操作过于繁琐。 我无法获取最新插入行的id 我在
cur.execute()之后使用了
cursor.fetchone()[0]

我的错误是:-

   Traceback (most recent call last):
  File "main.py", line 79, in <module>
    shipping_bill_id = cur.fetchone()[0]
psycopg2.ProgrammingError: no results to fetch
我的密码:-

    data = {    "products" :
                            {
                              "name": "",
                              "hs_code": "",
                              "unit_price": "",
                              "unit_currency": "",
                              "quantity": "",
                              "total_price": ""
                            }
        }

data["FOB_currency"] = obj["Currency "]
data["origin_port_name"] = "MUNDRA"
data["destination_port_name"] = obj["Port of Discharge"]
data["origin_port_code"] = "INMUN1"
data["destination_port_code"] = get_port_code(obj["Port of Discharge"])
iec = str(int(obj["IEC"]))
if len(iec) == 9 :
    data["IEC"] = "0"+iec
else:
    data["IEC"] = iec

data["products"]["quantity"]  = obj["Quantity "]
data["products"]["unit_price"] = obj["Item rate "]
data["products"]["name"] = obj["Item Desc "]
data["products"]["hs_code"] = int(obj["RITC Code "])
data["products"]["unit_currency"] = obj["Currency "]
data["FOB_value"] = obj["FOB "]
data["shipping_bill_date"] = obj["SB.Date"]
data["shipping_bill_no"] = int(obj["SB.No."])
data["invoice_number"] = obj["Invoice No "]

company_id = None
for e in company_rows:
    if e[1] == data["IEC"]:
        company_id = e[0]

if company_id != None :
    cur.execute("INSERT INTO shipping_bills (company_id,fob_value,fob_currency,origin_port_name,destination_port_name,origin_port_code,destination_port_code,invoice_number,shipping_bill_number,created_at,updated_at) \
                 VALUES  (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(company_id,data["FOB_value"],str(data["FOB_currency"]),data["origin_port_name"],data["destination_port_name"],data["origin_port_code"],data["destination_port_code"],data["invoice_number"],data["shipping_bill_no"],datetime.datetime.now(),datetime.datetime.now())) ;

    shipping_bill_id = cur.fetchone()[0]
    total_price = data["products"]["unit_price"]*data["products"]["quantity"]
    cur.execute("INSERT INTO shipping_bills_products (shipping_bill_id,total_price,name,unit_price,unit_currency,hss_code,quantity)  \
                VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)",(shipping_bill_id,total_price,str(data["products"]["name"]),data["products"]["unit_price"],str(data["products"]["unit_currency"]),data["products"]["hs_code"],data["products"]["quantity"],datetime.datetime.now(),datetime.datetime.now())) ;

    conn.commit()
    print(company_id)

您缺少返回的

cur.execute('''
    INSERT INTO shipping_bills (
        company_id,
        fob_value,
        fob_currency,
        origin_port_name,
        destination_port_name,
        origin_port_code,
        destination_port_code,
        invoice_number,
        shipping_bill_number,
        created_at,
        updated_at
    ) values  (%s,%s,%s,%s,%s,%s,%s,%s,%s,current_timestamp,current_timestamp)
    returning shipping_bill_number
    ''', (
        company_id,data["FOB_value"],
        str(data["FOB_currency"]),
        data["origin_port_name"],
        data["destination_port_name"],
        data["origin_port_code"],
        data["destination_port_code"],
        data["invoice_number"],
        data["shipping_bill_no"]
    )
) ;

对于遇到此问题的其他人:

对于“select”语句,我在fetchone()上遇到了类似的异常:

cursori = conn.cursor()
cursori.execute("select * from table where col = 'string'")
while 1:
    data = cursori.fetchone()
    if not data:
        break

    # other code...

原来我犯了一个简单的错误,在“其他代码”中用“cursori”执行另一个查询。

嘿..谢谢你的回答!但我应该退回船运账单和身份证……对吗?!!。。。因为这就是我想把它插入装运单产品的原因column@VivekIyer:归还你需要的东西。我只是在
shipping\u bills
表定义中没有看到该列。它为我工作,特别适用于多线程应用程序
cursori = conn.cursor()
cursori.execute("select * from table where col = 'string'")
while 1:
    data = cursori.fetchone()
    if not data:
        break

    # other code...