mysql - 如何使用flask-sqlalchemy确保在Flask中成功连接mysql数据库?

时间:2016-04-30 01:47:24

标签: python mysql database

我正在尝试使用Flask构建后端。我知道如何在Flask中连接sqlite。但似乎连接mysql更复杂。 我试过了

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/test'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

admin = User('admin', 'admin@example.com')

db.create_all() # In case user table doesn't exists already. Else remove it.

db.session.add(admin)

db.session.commit() # This is needed to write the changes to database

User.query.all()

User.query.filter_by(username='admin').first()

程序可以无错误地执行。但是,我使用Navicat检查表是否已添加到数据库中,我发现test数据库仍为空。

实际上我并不完全理解究竟什么是数据库连接。因为我似乎可以在Navicat中创建连接,并且我还在代码中连接数据库,这些连接之间有什么区别?

我想知道SQLALCHEMY_DATABASE_URI是否有问题,因为我发现有几个用户

enter image description here

有了这些问题,我无法确定我是否成功连接到数据库。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的数据库似乎没有设置为自动提交。 你可以从你的应用程序“强制”它

db = SQLAlchemy(app, session_options={'autocommit': True})