Estou fazendo um projeto e estou usando como base o mesmo projeto passado pelo professor, criei uma tabela de clientes e inseri alguns campos, populei a tabela e funcionou normalmente. No momento que eu vou na minha aplicação para realizar alguma alteração ou inserção de um novo cliente a mensagem de erro é apresentada: "init() missing 1 required positional argument: 'email'". Procurei em alguns fóruns, mas não consegui resolver. Essa é a minha função de atualizar e a inserir_cliente do arquivo aplicaocao.py,
@app.route('/atualizar', methods=['POST',])
def atualizar():
nome_cliente = request.form['nome_cliente']
razao_social = request.form['razao_social']
cpf_cnpj = request.form['cpf_cnpj']
insc_estadual = request.form['insc_estadual']
celular = request.form['celular']
email = request.form['email']
cliente = Cliente(nome_cliente, razao_social, cpf_cnpj, insc_estadual, celular, email, id_cliente=request.form['id_cliente'])
cliente_dao.salvar(cliente)
return redirect(url_for('index'))
@app.route('/inserir_cliente', methods=['POST',])
def inserir_cliente():
nome_cliente = request.form['nome_cliente']
razao_social = request.form['razao_social']
cpf_cnpj = request.form['cpf_cnpj']
insc_estadual = request.form['insc_estadual']
celular = request.form['celular']
email = request.form['email']
cliente = Cliente(nome_cliente, razao_social, cpf_cnpj, insc_estadual, celular, email)
cliente_dao.salvar(cliente)
return redirect(url_for('index'))
Esse é a minha classe cliente, do arquivo models.py
class Cliente:
def __init__(self, nome_cliente, razao_social, cpf_cnpj, telefone, insc_estadual, celular, email, id_cliente=None):
self.id_cliente = id_cliente
self.nome_cliente = nome_cliente
self.razao_social = razao_social
self.cpf_cnpj = cpf_cnpj
self.telefone = telefone
self.celular = celular
self.insc_estadual = insc_estadual
self.email = email
O meu dao.py está assim:
SQL_INSERE_CLIENTE = 'INSERT into cliente (nome_cliente, razao_social, cpf_cnpj, insc_estadual, celular, telefone, email) values(%s, %s, %s, %s, %s, %s, %s)'
SQL_DELETA_CLIENTE = 'DELETE FROM cliente where id_cliente = %s'
SQL_CLIENTE_POR_ID = 'SELECT id_cliente, nome_cliente, razao_social, cpf_cnpj, insc_estadual, celular, telefone, email from cliente where id_cliente = %s'
SQL_USUARIO_POR_ID = 'SELECT id_usuario, nome_usuario, controle from usuario where id_usuario = %s'
SQL_ATUALIZA_CLIENTE = 'UPDATE cliente SET nome_cliente=%s, razao_social=%s, cpf_cnpj=%s, insc_estadual=%s, telefone=%s, celular=%s, email=%s where id_cliente = %s'
SQL_BUSCA_CLIENTE = 'SELECT id_cliente, nome_cliente, razao_social, cpf_cnpj, insc_estadual, celular, telefone, email from cliente'
class ClienteDao:
def __init__(self, db):
self.__db = db
def salvar(self, cliente):
cursor = self.__db.connection.cursor()
if (cliente.id_cliente):
cursor.execute(SQL_ATUALIZA_CLIENTE, (cliente.nome_cliente, cliente.razao_social, cliente.cpf_cnpj, cliente.insc_estadual, cliente.telefone, cliente.celular, cliente.email, cliente.id_cliente))
else:
cursor.execute(SQL_INSERE_CLIENTE, (cliente.nome_cliente, cliente.razao_social, cliente.insc_estadual, cliente.cpf_cnpj, cliente.telefone, cliente.celular, cliente.email))
cliente.id_cliente = cursor.lastrowid
self.__db.connection.commit()
return cliente
def listar(self):
cursor = self.__db.connection.cursor()
cursor.execute(SQL_BUSCA_CLIENTE)
clientes = traduz_cliente(cursor.fetchall())
return clientes
def busca_por_id(self, id_cliente):
cursor = self.__db.connection.cursor()
cursor.execute(SQL_CLIENTE_POR_ID, (id_cliente,))
tupla = cursor.fetchone()
return Cliente(tupla[1], tupla[2], tupla[3], tupla[4], tupla[5], tupla[6], tupla[7], id_cliente=tupla[0])
def deletar(self, id_cliente):
self.__db.connection.cursor().execute(SQL_DELETA_CLIENTE, (id_cliente, ))
self.__db.connection.commit()