Stworzyłem ten bardzo prosty skrypt, który łączy się z SQLAlchemy z bazą danych MySQL i uruchamia instrukcję SELECT. Działa świetnie na moim laptopie deweloperskim. Teraz, gdy przeniosłem go na nowy serwer, zepsuje się.

from sqlalchemy import create_engine
import pandas as pd


def return_connection_string(database_name, database_user, database_password, database_host, database_port):
    try:
        connection_string = 'mysql+mysqlconnector://' + database_user + ':' + \
            database_password + '@' + database_host + ':' + database_port + '/' + database_name
        print(connection_string)
        return connection_string
    except Exception as e:
        print('Encountered error while generating connection string for MySQL!')
        print(e)


def return_connection_object(database_name, database_user, database_password, database_host, database_port):
    try:
        connection_string = return_connection_string(
            database_name, database_user, database_password, database_host, database_port)
        engine = create_engine(connection_string).connect()
        return engine
    except Exception as e:
        print('Encountered error while connecting to MySQL database!')
        print(e)


mysql_conn = return_connection_object(
    'xyz', 'xyz', 'xyz', 'xyz', 'xyz')


SQL_Query = pd.read_sql_query(
    'select current_date as today, current_date-1 as yesterday', mysql_conn)

df = pd.DataFrame(SQL_Query, columns=['today', 'yesterday'])

df1 = df[['yesterday']]

print(df1)

mysql_conn.close()

W czasie wykonywania skrypt kończy się niepowodzeniem z powodu tego błędu

Encountered error while connecting to MySQL database!
No module named 'mysql'
AttributeError: 'NoneType' object has no attribute 'cursor' 

Porównałem mój serwer z moim laptopem deweloperskim i PIP pokazuje tę samą wersję modułu SQLAlchemy: 1.3.11.

Czy muszę zainstalować inny moduł? czego mi brakuje?

0
A B 19 grudzień 2019, 20:50
Czy możesz naprawić swoje wcięcie?
 – 
C.Nivs
19 grudzień 2019, 20:52
3
SQLAlchemy nie ma bezpośredniego dostępu do bazy danych, ale używa innych modułów do pracy z różnymi bazami danych. I potrzebujesz trochę modułu, który współpracuje z mysql - tj. mysql-connector-python lub sprawdź, jaki moduł pokazuje Twój pip
 – 
furas
19 grudzień 2019, 20:52
Serwer nie ma mysql-connector-python module. Sprawdzę i złożę raport.
 – 
A B
19 grudzień 2019, 20:59

1 odpowiedź

Po przejrzeniu wyjścia PIP na moim serwerze i laptopie deweloperskim odkryłem, że brakuje jednego modułu. Uruchomienie tego polecenia

pip3 install --upgrade mysql-connector-python

Rozwiązać problem.

3
A B 19 grudzień 2019, 21:16