MySQLdb на Ma c Каталина: Библиотека не загружена: libmysqlclient.18.dylib - PullRequest
0 голосов
/ 06 апреля 2020

Я пытался создать приложение с Flask на PyCharm, но я получаю эту ошибку. Проведя некоторые исследования, я обнаружил, что некоторые люди говорят, что мне нужно исправить PATH, но я не знаю, как это исправить.

Вот код и вывод, который я получаю:

import re
import MySQLdb.cursors
import mysql.connector
from flask import Flask, render_template, request, redirect, url_for, session
from flask_mysqldb import MySQL

app = Flask(__name__)

app.secret_key = 'hotdog'

app.config['MYSQL_HOST'] = '<SOME_HOST>'
app.config['MYSQL_USER'] = '<SOME_USER>'
app.config['MYSQL_PASSWORD'] = '<SOME_PASSWORD>'
app.config['MYSQL_DB'] = '<SOME_DATABASE>'

mysql = MySQL(app)



@app.route('/', methods=['GET', 'POST'])
def login():
    msg = ''
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        username = request.form['username']
        password = request.form['password']
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE username = %s AND password = %s', (username, password,))
        account = cursor.fetchone()
            session['loggedin'] = True
            session['id'] = account['id']
            session['username'] = account['username']
            return render_template('home.html', msg=msg)
        else:
            msg = 'Incorrect username/password!'
    return render_template('index.html', msg=msg)


@app.route('/logout')
def logout():
    session.pop('loggedin', None)
    session.pop('id', None)
    session.pop('username', None)
    return redirect(url_for('login'))

@app.route('/home')
def home():
    if 'loggedin' in session:
        return render_template('home.html', username=session['username'])
    return redirect(url_for('login'))



@app.route('/profile')
def profile():
    if 'loggedin' in session:
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE id = %s', (session['id'],))
        account = cursor.fetchone()
        return render_template('profile.html', account=account)
    return redirect(url_for('login'))


if __name__ == '__main__':
    app.run()

Выход:

FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder /Users/parth/Desktop/School/Comp/3380_Database/team_16
/Users/parth/Desktop/School/Comp/3380_Database/team_16/venv/bin/python -m flask run
* Serving Flask app "app.py"
* Environment: development
* Debug mode: off Usage: python -m flask run [OPTIONS]

Error: While importing "app", an ImportError was raised:

Traceback (most recent call last):
File "/Users/parth/Desktop/School/Comp/3380_Database/team_16/venv/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)   File "/Users/parth/Desktop/School/Comp/3380_Database/team_16/app.py", line 2, in <module>
import MySQLdb.cursors   File "/Users/parth/Desktop/School/Comp/3380_Database/team_16/venv/lib/python3.7/site-packages/MySQLdb/__init__.py",line 18, in <module>
from . import _mysql ImportError:

ImportError: dlopen(/Users/parth/Desktop/School/Comp/3380_Database/team_16/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib   Referenced from: /Users/parth/Desktop/School/Comp/3380_Database/team_16/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so Reason: image not found
...