Problema com porta do MYsql

13 views
Skip to first unread message

Milton Mario Moreira Pinto Junior

unread,
Apr 18, 2023, 5:32:32 AM4/18/23
to Python Brasil
Estou usando o Mariadb na porta 3309 não sei se é este o problema, mas acho ue deve ser meu codigo.

Este é o erro no Visual Studio Code:
PS C:\xampp\htdocs\amoreqa> & E:/Python39/python.exe c:/xampp/htdocs/amoreqa/cad_user/rec_img.py
Database connection made!
Traceback (most recent call last):
  File "c:\xampp\htdocs\amoreqa\cad_user\rec_img.py", line 18, in <module>
    image_array = np.frombuffer(image_data, dtype=np.uint8)
TypeError: a bytes-like object is required, not 'NoneType'
Alem disso deve ter uma divergência, pois estou usando a versão 311 e aparece 39.
Meu código:
import mysql.connector
import cv2
import numpy as np
from mysql.connector import errorcode
try:
    con = mysql.connector.connect(host='localhost', user='root', password='mm5671', database='amoreqa', port=3309)
    cursor = con.cursor()
    # Selecionar os dados da imagem do banco de dados
    consulta_sql = 'SELECT ft_foto FROM foto_assoc'
    cursor.execute(consulta_sql)
    linhas = cursor.fetchone()
    print("Database connection made!")
    # Recuperar os dados da imagem
    image_data = cursor.fetchone()

    # Decodificar os dados da imagem
    image_array = np.frombuffer(image_data, dtype=np.uint8)
    image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)

    # Exibir a imagem
    cv2.imshow('Image', image)
    cv2.waitKey(0)

    # Fechar a conexão com o banco de dados
    cursor.close()
    con.close()

except mysql.connector.Error as error:
    if error.errno == errorcode.ER_BAD_DB_ERROR:
        print("Database doesn't exist")
    elif error.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("User name or password is wrong")
    else:
        print(error)

Kaique Afonso

unread,
Apr 18, 2023, 7:29:08 AM4/18/23
to python...@googlegroups.com
Bom dia amigo. Já tive problemas usando servidores que terceirizam o MySQL (WampServer/Xampp). Lhe recomendo instalar literalmente o MySQL no site oficial deles


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/63aa79fe-fe71-44ab-860a-eee1c54885ban%40googlegroups.com.


--
Kaique Afonso Ferreira do Rosário
Deus, Pátria e Família
Santo Antônio de Jesus (BA) - 44440-822
(75) 98172-9111 Oi  Kaique

Marcelo Valle

unread,
Apr 18, 2023, 7:33:27 AM4/18/23
to python...@googlegroups.com
Pelo erro, seu código conectou com sucesso ao servidor SQL (pois nao deu erro antes) e na hora em que a consulta 'SELECT ft_foto FROM foto_assoc' foi executada, seu código pegou com sucesso o primeiro registro, e o valor do campo ft_foto era nulo para esse registro. 


--

Joao S. O. Bueno

unread,
Apr 18, 2023, 8:51:44 AM4/18/23
to python...@googlegroups.com
É só ler o seu código - voce faz um select, e chama o "fetch_one" duas vezes. O dado que você quer deve estar na variável "linhas". Quando você chama o ".fetch_one" de novo para colocar o resultado na variável "image_data" , o objeto retornado é "None". 

Pra eviar ficar empacado com esse tipo de coisa é importante desenvolver o hábito de "olhar o que está dentro das variáveis" enquanto o programa é executado. Em programação não dá pra escrever 10, 30, 50 linhas de código e "ter fé" que o resultado vai ser o que você estava pensando.

A forma mais simples de fazer isso é simplesmente colocando um "print" no meio do seu código. Se colocar um print para a variável "linhas" e um pra "image_data" vai ver o que está acontecendo.
A forma mais recomendável é depurar o programa: ou usar as ferramentas embutidas na sua IDE pra isso, ou colocar um ¨breakpoint()" no meio do código e usar o PDB do Python - https://docs.python.org/3/library/pdb.html - essa forma permite a interação direta com as variáveis e acompanhar a execução passo a passo.

E por fim. quanto a versão do Python: não é o que está dando errado ai, mas pode te atrapalhar bastante num futuro próximo: é importante em cada projeto configurar um "vitualenv" ou equivalente, e se certificar de que todas as suas dependências estejam instaladas nesse virtualenv. No VSCODE isso é feito na opção de "escolher o interpretador Python" para o projeto - e você seleciona o arquivo python3 (ou python3.exe no windows) que está dentro do virtualenv. 

Andre Fonseca

unread,
Apr 24, 2023, 4:30:12 PM4/24/23
to python...@googlegroups.com
O erro não parece estar na versão ou porta e sim no fato de estar passando um objeto nulo para dentro da funcao do numpy. 

Vi que faz fetchone duas vezes no seu codigo pode ser que esteja andando com o cursor para uma linha vazia e com isso dando o erro. 

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/63aa79fe-fe71-44ab-860a-eee1c54885ban%40googlegroups.com.


--
----------------------
Andre Fonseca
http://andrefonseca.net
Reply all
Reply to author
Forward
0 new messages