When trying to update database with data from a dict where uuident = uuident, i'm receiving this error
TypeError: update() takes at most 2 positional arguments (3 given)
The error happens only in this update. If insert there is no errors at all.
I'm a beginner, can you please help me out?
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
type is <class 'collections.OrderedDict'>
I'm sorry for my terrible mistake here.
Well, just in case somebody goes through the same:
produto_precificado is a row from table precificado.
So that was the error.
I changed:
produto_precificado.update(product,['uuident'])
for
precificado.update(product,['uuident'])
Working like a charm.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.