from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
app = Flask(__name__)
#配置数据库的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/flask_sql_demo'
#跟踪数据库的修改 -->不建议开启,消耗性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
#数据库的模型 需要继承db.Model
class Admin(db.Model):
#定义表名
__tablename__ = 'admins'
#定义字段:db.Column表示是一个字段
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16), unique=True)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16), unique=True)
#db.ForeignKey('admins.id')用于表示外键
role_id = db.Column(db.Integer, db.ForeignKey('admins.id'))
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
#删除表
db.drop_all()
#创建表
db.create_all()
app.run()
注意:在直接运行时,并没有报错,但数据库中也没有相应的修改。查阅了资料后发现:在使用db.create_all()
和db.create_all()
之前,需要在pycharm的命令行输入flask shell
,然后from app import db
,db.create_all()
这样,就可以发现数据库中有了我们需要创建的表。
增删改差的基本操作:
- 在Flask-SQLAlchemy中,插入,修改,删除操作均由数据库会话或者说是事务(db.session)管理,数据库回话相当于在准备把数据写入数据库前的临时存储区,要先将数据添加到会话中然后调用
commit()
方法提交会话 - 查询操作通过query对象操作数据,最基本的查询是查询表中的所有数据,可以通过过滤器进行更准确的查询。
db.session.add(role) #添加到数据库的session中
db.session.add_all([user1, user2]) #添加多个信息到session中
db.session.commit() #提交数据库的修改(包括增删改)
db.session.rollback() #数据库的回滚操作
db.session.delete(user) #删除数据库,需要加上commit
在pycharm中导入ipython包,然后在命令行中进行相关的操作。
例如: