Не удается подключить flask SQLAlchemy к базе данных mysql

#python #mysql #flask-sqlalchemy #pymysql #alembic

#python #mysql #flask-sqlalchemy #pymysql #перегонный куб

Вопрос:

Я пытаюсь подключить свое приложение flask к базе данных MySQL. вот данные MySQL

 mysql> select user();
 ---------------- 
| user()         |
 ---------------- 
| root@localhost |
 ---------------- 
1 row in set (0.01 sec)

mysql> SHOW DATABASES;
 -------------------- 
| Database           |
 -------------------- 
| alchemy            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
 -------------------- 
5 rows in set (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
 --------------- ------- 
| Variable_name | Value |
 --------------- ------- 
| port          | 3306  |
 --------------- ------- 
1 row in set (0.01 sec)
  

вот init.py

 from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from app import routes, models
  

вот config.py

 import os
basedir = os.path.abspath(os.path.dirname(__file__))

class Config(object):
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'test-key-motherfucker'
    SQLALCHEMY_DATABASE_URI = 'mysql://root@127.0.0.1:3360/alchemy'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
  

и models.py

 from app import db

class Test(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, unique=True)

    def __repr__(self):
        return '<Test {}>'.format(self.name)
  

когда я пытаюсь инициализировать db с

 flask db init
flask db upgrade
  

Я получаю

 sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql
  

Я пытался использовать pymysql
SQLALCHEMY_DATABASE_URI = ‘mysql pymysql://rootl@127.0.0.1:3360/alchemy ‘

как подключить mysql к sqlalchemy?

Комментарии:

1. Здесь есть опечатка в номере порта: SQLALCHEMY_DATABASE_URI = 'mysql://root@127.0.0.1:3360/alchemy' он должен быть 3306

Ответ №1:

правильная причина подключения к базе данных mysql

 mysql://username:password@server/db
  

сначала попробуйте это

 SQLALCHEMY_DATABASE_URI = 'mysql://root:@127.0.0.1/alchemy'
  

если это не сработало, попробуйте это

 SQLALCHEMY_DATABASE_URI = 'mysql://root:@127.0.0.1:3306/alchemy'
  

если это не сработало, попробуйте это

 SQLALCHEMY_DATABASE_URI = 'mysql pymysql://root:@127.0.0.1:3306/alchemy
  

прошу прощения за то, что ввел много вариантов, но я надеюсь, что один из них сработает 🙂

если ничего не сработало, проблема не в соединении с базой данных