pip install flask-sqlalchemy
要链接mysql,仍需要安装flask-mysqldb
pip install flask-mysqldb
对比
django是在setting中配置的
flask中:
# 设置链接数据库的url
app.config['SQLALCHEMY_DATABASE_URL']='mysql://root:mysql@127.0.0.1:3306/test'
# 设置每次请求结束后会自动提交数据库的改动
app.config['SQLACHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Ture
# 查询时会显示原始sql语句
app.comfig['SQLALCHEMY_ECHO'] = True
db = SQLALchemy(app)
初始化配置
# encoding=utf-8
__author__ = "zhangyue"
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置参数"""
# sqlalchemy的配置参数
SQLALCHEMY_DATABASE_URL = "mysql://root:mysql@127.0.0.1:3306/test3"
# 设置SQLALCHEMY自动跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config)
# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)
@app.route("/")
def index():
return "index page"
if __name__ == '__main__':
app.run(debug=True)
创建两个表demo
user与role表关联role_id = db.Column(db.Integer,db.ForeignKey("tbl_roles.id"))
# encoding=utf-8
__author__ = "zhangyue"
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置参数"""
# sqlalchemy的配置参数
SQLALCHEMY_DATABASE_URL = "mysql://root:mysql@127.0.0.1:3306/test3"
# 设置SQLALCHEMY自动跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config)
# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)
class User(db.Model):
"""用户表"""
__tablename__ = "tbl_users"
id = db.Column(db.Integer,primary_key=True)# 主键,整型的主键会默认设置为自增主键
name = db.Column(db.String(64),unique=True)
email = db.Column(db.String(128),unique=True)
password = db.Column(db.String(128))
role_id = db.Column(db.Integer,db.ForeignKey("tbl_roles.id"))
class Role(db.Model):
"""用户身份表"""
__tablename__ = "tbl_roles"
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(32),unique=True)
users = db.relationship("User",backref="role")
@app.route("/")
def index():
return "index page"
if __name__ == '__main__':
app.run(debug=True)
注意!!!
前面有错误,配置那块
class Config(object):
"""配置参数"""
# sqlalchemy的配置参数
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/test3"
# 设置SQLALCHEMY自动跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_DATABASE_URI最后一个字母是I不是L
向两个表中添加数据,很简单的交互
if __name__ == '__main__':
# 通过db.drop_all;方式清楚现在链接的数据库中所有的数据
db.drop_all()
# 创建所有的表
db.create_all()
# app.run(debug=True)
# 创建对象
role1 = Role(name='admin')
# session记录对象任务
db.session.add(role1)
# 提交任务到数据库中
db.session.commit()
role2 = Role(name='user')
db.session.add(role2)
# 提交任务到数据库中
db.session.commit()
us1 = User(name='wang',email='wang@163.com',password='123456',role_id=role1.id)
us2 = User(name='wa', email='wg@163.com', password='123456', role_id=role1.id)
us3 = User(name='wg', email='ng@163.com', password='123456', role_id=role2.id)
db.session.add_all([us1,us2,us3])
db.session.commit()