Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problemas com a instalação do mysql no Mac OS

Olá! Também estou tendo problemas com a instalação no mac OS 10.13.6. Depois de fazer todos os passos desse guia - https://ruddra.com/posts/install-mysqlclient-macos/ - encontro o seguinte erro ao tentar rodar o prepara_banco.py:

Traceback (most recent call last):
  File "/Users/chicorasia/PycharmProjects/jogoteca/prepara_banco.py", line 1, in <module>
    import MySQLdb
  File "/Users/chicorasia/PycharmProjects/jogoteca/venv/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/chicorasia/PycharmProjects/jogoteca/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/chicorasia/PycharmProjects/jogoteca/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
  Reason: image not found

Desde já obrigado pela ajuda.

3 respostas

Olá Francisco, estava tendo problema também porém segui os passos abaixo no Mac e deu certo.

Passo 01: Instalar o MySql no Mac; Comando: brew install mysql

Passo 02: Instalar a lib do Flask Comando: pip install flask_mysqldb

Tente essa sequencia e confirma aí o resultado.

Boa sorte.

Olá Anderson, obrigado por entrar em contato. Tentei o procedimento e continua dando o mesmo erro (não encontra a libssl).No final das contas, depois de perder vários dia, preferi refatorar a aplicação, integrando com o Firebase, com quem já tenho alguma familiaridade.

Abs!

solução!

E, finalmente, minha solução usando o Firebase:

No módulo entities.py:


class Jogo:

#Modifiquei o construtor da classe Jogo para receber um id, com valor padrão None:

def __init__(self, nome, categoria, plataforma, id=None):
        self.__nome = nome
        self.__categoria = categoria
        self.__plataforma = plataforma
        self.__id = id

    @property
    def nome(self):
        return self.__nome

    @property
    def categoria(self):
        return self.__categoria

    @property
    def plataforma(self):
        return self.__plataforma

    @property
    def id(self):
        return self.__id

    @id.setter
    def id(self, id):
        self.__id = id

No módulo dao.py:

from entities import Jogo, Usuario

import pyrebase

# CONFIG = { informações da API do Firebase } 

firebase = pyrebase.initialize_app(CONFIG)

def inicializa_db():
    db = firebase.database()
    return db

lista_jogos = []
inicializa_db()

class JogoDao:

    def __init__(self, db):
        self.__db = inicializa_db

    def salvar(jogo):
        jogos_db = inicializa_db()

    # Verifica se o jogo já tem id;
    # se não tiver, gera um id novo; se tiver, sobrescreve o jogo já gravado
        if jogo.id == None:
            id = jogos_db.generate_key()
        elif jogo.id != None:
            id = jogo.id
        data = {"nome" : jogo.nome, "categoria" : jogo.categoria, "plataforma" : jogo.plataforma, "id" : id}
        jogos_db.child('jogo').child(id).update(data)


    @staticmethod
    def listar():
        lista_jogos.clear()
        jogos_db = inicializa_db().child('jogo').get()

        for j in jogos_db.each():
            jogo = j.val()
            jogo = Jogo(jogo['nome'], jogo['categoria'], jogo['plataforma'], jogo['id'])
            lista_jogos.append(jogo)

        return lista_jogos

    def busca_por_id(self, id):
        jogo = inicializa_db().child('jogo').child(id).get().val()
        jogo = Jogo(jogo['nome'], jogo['categoria'], jogo['plataforma'], jogo['id'])
        return jogo

    def deletar(self, id):
        inicializa_db().child('jogo').child(id).remove()