flask_sqlalchemy
的使用
- 使用
flask_sqlalchemy
中的SQLAlchemy
进行初始化:
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
db = SQLAlchemy(app)
- 设置配置信息 在
config.py
文件中添加以下配置信息:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@localhost:3306/test?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = False
- 在
app
文件中,添加配置文件。
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
- 做一下测试
db.create_all()
如果没有报错,说明配置没有问题,如果有错误,可以根据错误进行修改。
flask_sqlalchemy
模型创建
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
# 创建模型类
class User(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(32),nullable=False)
db.create_all() # 将模型映射到数据库中
参数
Integer
代表的是整型String
代表的是varchar
类型,需要指定长度Text
代表的是Text
类型
- 其他参数:
primary_key
代表的是将这个字段设置为主键autoincrement
代表的是这个主键为自增长的nullable
代表的是这个字段是否为空,False
: 不能为空,True
: 可以为空unique
代表的是这个字段是否是唯一索引,True
: 唯一索引False
: 不是唯一索引
flask_sqlachemy
处理数据的方法- 增加数据
def insert():
try:
user = User(username='fuqiang')
db.session.add(user)
db.session.commit()
return user
except:
db.session.rollback()
return None
- 删除数据
def delete():
try:
obj= User.query.filter_by(id=id).delete()
db.session.commit()
return obj
except:
db.session.rollback()
return None
- 更新数据
from sqlalchemy import text
def update():
data = {'username':'qiang'}
where = 'id=1'
try:
user= User.query.filter_by(text(where)).update(data)
db.session.commit()
return user
except:
db.session.rollback()
return None
- 查询数据
# 第一种查询方式
def select():
user = User.query.filter(User.id==id).all()
return user
# 第二种查询方式
def select():
user = User.query.filter_by(id=2).all()
return user
# 第三种查询方式
def select():
where = 'id>1'
user = User.query.filter_by(text(where)).all()
return user
-
sqlalchemy
创建外键- 添加外键
ForeignKey
- 添加外键
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
# 创建模型类
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(32),nullable=False)
__table_args__ = {
'mysql_charset':'utf8'
}
class UserDetail(db.Model):
__tablename__ = 'detail'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
nickname = db.Column(db.String(32),default='')
email = db.Column(db.String(255),default='')
address = db.Column(db.String(255),default='')
uid = db.Column(db.Integer,db.ForeignKey='user.id') #增加外键
users = db.relationship('User',backref=db.backref('details'))
__table_args__ = {
'mysql_charset':'utf8'
}
db.create_all() # 将模型映射到数据库中
- 使用外键获取数据