#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
прошу прощения за то, что ввел много вариантов, но я надеюсь, что один из них сработает
если ничего не сработало, проблема не в соединении с базой данных