Python数据集更新-TypeError:update()最多接受2个位置参数(给定3个)

Python数据集更新-TypeError:update()最多接受2个位置参数(给定3个),python,python-2.7,dataset,parameter-passing,Python,Python 2.7,Dataset,Parameter Passing,当尝试使用uuident=uuident的dict中的数据更新数据库时,我收到了这个错误 错误: 此错误仅在此更新中发生。如果插入,则根本没有错误 我是初学者,你能帮我吗 细节 精密器 更新 produto\u precificado类型是很抱歉,我犯了这个可怕的错误 好吧,以防万一有人经历同样的事情: produto_precificado是precificado表中的一行 这就是错误所在 我改变了: produto_precificado.update(product,['uuident']

当尝试使用uuident=uuident的dict中的数据更新数据库时,我收到了这个错误

错误: 此错误仅在此更新中发生。如果插入,则根本没有错误

我是初学者,你能帮我吗

细节 精密器 更新
produto\u precificado
类型是

很抱歉,我犯了这个可怕的错误

好吧,以防万一有人经历同样的事情:

produto_precificado是precificado表中的一行

这就是错误所在

我改变了:

produto_precificado.update(product,['uuident'])
为了


工作得很有魅力

什么类型的
produto\u precificado
?如果是一本字典,你的论点就太多了。
produto_precificado
的类型是什么?嘿@Jean-Françoisfare produto_precificado type:@Have_Mercy produto_precificado type:
Traceback (most recent call last):
  File "/home/ubuntu/workspace/ex50/bin/teste.py", line 59, in <module>
    main()
  File "/home/ubuntu/workspace/ex50/bin/teste.py", line 35, in main
    prec.precifica("7f559bb1-b6c6-44b7-ba4e-1e4592dcd009")
  File "/home/ubuntu/workspace/ex50/bin/precificator.py", line 81, in precifica
    produto_precificado.update(product,['uuident'])
  File "/usr/lib/python2.7/_abcoll.py", line 534, in update
    "arguments ({} given)".format(len(args)))
TypeError: update() takes at most 2 positional arguments (3 given)
from alcateia.alcateia import *
from bling.bling import *
from tray.tray import *
import alcateia.alcateia
import tray.tray
import tray.trayservice
from precificator import Precificator
import logging


def main():
    logging.basicConfig(filename='myapp.log', level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
    logging.info('Programa inicializado...')

    prec = Precificator()
    prec.precifica("7f559bb1-b6c6-44b7-ba4e-1e4592dcd009")


    logging.info('Processo finalizado!')
    logging.info('--------------------')



if __name__ == '__main__':
    main()
# coding: utf-8
import sys
import uuid
from sgcon import Produto
from db import produtosalca, alca_uuid, cem, precificado
import logging
logger = logging.getLogger(__name__)

class Precificator(object):
    """
    modulo precificador
    """
    def __init__(self):
        pass

    def precifica(self,uuident):
         print 'uuident value is %s' % uuident
         print 'uuident type is %s' % type(uuident)

         product = {} ## cria dict product

         product['uuident'] = uuident

         produto_cem = cem.find_one(uuident=uuident) ## gets produto_cem from database cem

         valorcem = produto_cem['valorcem'] 

         margem = 0.04 ## definimos margem em 10%
         product['margem']=margem  ## atribuimos margem

         valorMargem = valorcem * margem  ## valor + margem
         product['valormargem']=valorMargem

         despadm = 15.00 ## desp adm 15 reais
         product['despadm'] = despadm 

         outrasdesp = 5.00 ## outras desp 5 reais
         product['outrasdesp'] = outrasdesp

         somatudo = valorMargem + despadm + outrasdesp

         comissaovenda = 0.00 ##comissao mktplace 16%
         product['comissaovenda'] = comissaovenda

         comissaorecebiveis = 0.05 ##comissao / desp financeiras 0%
         product['comissaorecebiveis']=comissaorecebiveis 

         cemcommargem = valorcem*(1+(margem)) ## cem com margem = cem*(1+margem)

         aliqICMS = produto_cem['aliqICMS'] 
         product['aliqICMS'] = aliqICMS

         aliqPIS = produto_cem['aliqPIS']

         aliqCofins = produto_cem['aliqCofins']

         aliqTotalImposto = aliqICMS + aliqCofins + aliqPIS ## aliquota total (em %) dos impostos

         base = cemcommargem + despadm + outrasdesp ## Soma as despesas em reais ao valorcem e obtem a base para o calculo

         outrasAliq = comissaovenda + comissaorecebiveis ## outras aliquotas não tributárias

         indice = 1-(aliqTotalImposto + outrasAliq) ##  índice para cálculo

         precovenda = base / indice  ## aplica o índice

         product['precovenda']=precovenda ## atribui ao dict product

         ## ALL MATH DONE AND DICT PRODUCT IS READY TO GO TO DATABASE TABLE PRECIFICA

         produto_precificado = precificado.find_one(uuident=uuident) ## CHECKS IF ROW WITH THIS UUIDENT EXISTS IN TABLE PRECIFICA

         """
         CHECKS AND ACT
         """

         if produto_precificado: ## IF PRODUCT EXISTS IN DATABASE TABLE
            ## UPDATE
            print 'produto exists in db'
            print product
            print type(product)
            """
            THIS DO NOT WORK
            """
            produto_precificado.update(product,['uuident']) ## THIS DO NOT WORK!!!!
            ##produto_precificado.update(dict(precovenda=precovenda),['id'])

         else: ## IF product do not exists
            ## INSERT
            print 'produto nao existe no bd'
            """
            THIS WORKS!!!!
            """
            precificado.insert(product)  ### THIS WORKS!
produto_precificado.update(product,['uuident'])
precificado.update(product,['uuident'])