ไม่สามารถเชื่อมต่อ flask sqlAlchemy กับฐานข้อมูล mysql

Sep 25 2020

ฉันกำลังพยายามเชื่อมต่อแอพขวดกับฐานข้อมูล 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://[email protected]: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)

เมื่อฉันพยายามเริ่มต้นฐานข้อมูลด้วย

flask db init
flask db upgrade

ฉันได้รับ

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

ฉันพยายามใช้ pymysql SQLALCHEMY_DATABASE_URI = 'mysql + pymysql: //[email protected]: 3360 / alchemy'

วิธีเชื่อมต่อ mysql กับ sqlalchemy

คำตอบ

1 AbdullahAlessa Sep 26 2020 at 00:46

เหตุผลที่ควรเชื่อมต่อกับฐานข้อมูล 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

ฉันขอโทษที่ใส่ตัวเลือกมากมาย แต่ฉันหวังว่าหนึ่งในนั้นจะใช้ได้ :)

หากไม่มีการทำงานแสดงว่าปัญหาไม่ใช่การเชื่อมต่อกับฐานข้อมูล