使用Flask、SQLAlchemy连接MySQL数据库

问题描述 投票:0回答:2

我想使用 Flask 连接到 MySQL 数据库。下面是我的代码:

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'admin'
app.config['MYSQL_PASSWORD'] = '********'
app.config['MYSQL_DB'] = 'abc'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://admin:********@localhost/abc'

api = Api(app)
db = SQLAlchemy(app)
ma = Marshmallow(app)

db.create_all()

class Video(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    videoid = db.Column(db.String(80), unique=True)
    video_timestamp = db.Column(db.Integer, unique=True)

    def __init__(self, videoid, video_timestamp):
        self.videoid = videoid
        self.video_timestamp = video_timestamp

我遇到了这个错误:

sqlalchemy.exc.ProgrammingError:(pymysql.err.ProgrammingError)(1146, “表‘abc.video’不存在”) [SQL: 'SELECT video.id AS video_id、video.videoid AS video_videoid、video.video_timestamp AS 视频_视频_时间戳 来自视频']

我知道如何连接SQLite数据库,但是连接MySQL数据库似乎很难?

有人可以帮助我吗?

python mysql flask flask-sqlalchemy
2个回答
0
投票

连接到数据库没有问题,但看起来您的表尚未创建。 因此,请删除代码中的

db.create_all()
并从 sql_alchemy 官方文档 中检查这一点:

要创建初始数据库,只需从 交互式 Python shell 并运行 SQLAlchemy.create_all() 方法 创建表和数据库:

from yourapplication import db
db.create_all()

0
投票

连接Mysql的代码:

from flaskext.mysql import MySQL

cursorclass 和自动提交让生活更轻松

mysql = MySQL(autocommit=True, cursorclass= DictCursor)
app.config['SECRET_KEY'] = 'Thisissupposedtobesecret!'
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'db'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_PORT'] = 8889
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql.init_app(app)

connect cursor 
cursor = conn.cursor()

您可以在 phpmyadmin (localhost) 在线下载 xxamp 或 Mamp 和主机数据库

© www.soinside.com 2019 - 2024. All rights reserved.