SQLAlchemy模型与表映射
[TOC]
模型与表映射
-
模型需要继承自
db.Model
,映射到表中的属性需写成db.Column
的数据类型。 -
数据类型:
-
db.Integer
=> int -
db.String(60)
=> varchar,括号内为字符串限制长度 -
db.Text
=> Text
-
-
字段参数:
-
primary_key=True
=>设为主键 -
autoincrement=True
=>自增长 -
nullable=True
=> 字段可为空
-
例子:
SQL代码
create table article (
id int primary key autoincrement,
title varchar(100) not null,
content text not null,
)
python代码
# 首先继承自db.Model
class Article(db.Model):
__tablename__ = 'article' # 指定一个表名
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
db.create_all() #将模型映射到数据库中
增删改查操作
- 增
add = Article(title='aaa',content='bbbb') #实例对象
db.session.add(add) #绘制SQL语句
db.session.commit() #提交事务,执行
- 查
Q1 = Article.query.filter(Article.id == '2').first() #返回一条数据
Q2 = Article.query.filter(Article.id == '2').all() #返回所有数据,一个数组
- 改
Q1 = Article.query.filter(Article.id == '2').first() # 先查找 获取数据
Q1.title = '新的标题2' #以操作对象的方式修改数据
db.session.commit() #提交事务,执行
- 删
D1 = Article.query.filter(Article.id == '2').first() # 先查找 获取数据
db.session.delete(D1) #以delete方法删除
db.session.commit() #提交事务,执行
网友评论