Хочу сделать сайт на 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 и поставить его заново.