@shuwiku

Почему MySQL каждый раз вылетает с ошибкой?

Хочу сделать сайт на Flask, просто интереса и практики ради. Для сайта хочу использовать удалённую базу данных MySQL, которая будет лежать на другом сервере. В общем, проект только на стадии зародыша и код его выглядит следующим образом:

"""Главный скрипт сайта."""
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy


# Конфигурация приложения
app = Flask(__name__, template_folder="templates")

user = "user"
password = "Password_1"
ip = ""
table = "TEST"
arg = "unix_socket=/var/run/mysqld/mysqld.sock"
link = f"mysql+pymysql://'{user}':'{password}'@'{ip}'/{table}?{arg}"
app.config["SQLALCHEMY_DATABASE_URI"] = link

app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.INT, primary_key=True)
    username = db.Column(db.VARCHAR(20), nullable=False)
    email = db.Column(db.VARCHAR(64), unique=True, nullable=False)
    password = db.Column(db.CHAR(64), nullable=False)
    emailcode = db.Column(db.CHAR(4), nullable=True)
    is_registered = db.Column(db.BOOLEAN, default=0, nullable=False)


@app.route("/")
def index():
    """Начальная страница сайта."""
    return render_template("index.html")


@app.route("/test")
def test_it():
    user = User(
        username="SITE TEST USER",
        email="SETE TEST USER",
        password="251b2cfd96d5d7a1996384f44a01d37afb72e67a8df94b8cf50ac045eec2ae42"
    )
    db.session.add(user)
    db.session.commit()
    return render_template("index.html")


def main():
    """If __name__ == __main__."""
    app.run(port=8080, host="127.0.0.1", debug=False)


if __name__ == "__main__":
    main()


Оно, естественно, пока что не выполняет никакой функции. В общем, при переходе на /test, сразу вылетает с ошибкой:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'user'@'localhost' (using password: YES)")
На сервере с таблицей само собой все права для пользователя выданы. И для localhost и для %. В чем же, блин, ошибка?

Из того что я сам пытался сделать (а вдруг сработало бы):
- поменять в ссылке '//' на '///';
- поменять в ссылке 'TEST' на 'TEST.db';
- снести нафиг весь mysql и поставить его заново.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@Wispik
link = f"mysql+pymysql://'{user}':'{password}'@'{ip}'/{table}?{arg}"

Кавычки одинарные надо убрать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы