我正在尝试使用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
是否有问题,因为我发现有几个用户
有了这些问题,我无法确定我是否成功连接到数据库。有人可以帮忙吗?
答案 0 :(得分:0)
您的数据库似乎没有设置为自动提交。 你可以从你的应用程序“强制”它
db = SQLAlchemy(app, session_options={'autocommit': True})