Python 使用Flask、SQLAlchemy连接到MySQL数据库

Python 使用Flask、SQLAlchemy连接到MySQL数据库,python,mysql,flask,flask-sqlalchemy,Python,Mysql,Flask,Flask Sqlalchemy,我想使用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['SQLALCH

我想使用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:'选择video.id作为 video\u id,video.videoid作为video\u videoid,video.video\u时间戳作为 视频\u视频\u时间戳\n来自视频']

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


任何人都可以帮助我吗?

连接到数据库时没有问题,但您的表似乎尚未创建。 因此,删除代码中的
db.create_all()
,并从以下位置进行检查:

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


连接到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和主机数据库

不是100%确定,可能是您调用了
db.create_all()
在声明
视频
模型之前?我尝试删除这一行,并在终端中尝试打开python3并使用以下代码:
来自我的应用程序导入数据库
,但它不起作用。它到底如何不起作用?我尝试了,但出现了相同的错误。我知道手动创建表的方法。在删除代码中的db.create_all()后,您运行,并在python控制台中运行,但它拒绝了?@detuvoldo我添加了这些信息,但无法重现您的错误否,我没有。我正在尝试连接MariaDBI我正在尝试使用ORM:D谢谢你的帮助Autocommit让生活很痛苦,即使是小项目?
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()