flask-SQLAlchemy的官方中文文档
http://www.pythondoc.com/flask-sqlalchemy/quickstart.html
不过这个文档里用的数据库是SQLite
1.新建一个flask项目
2.在pycharm中装上flask-SQLAlchemy和pymysql,python3已经不支持mysql了,所以我这里用了pymysql.(flask-mysqldb感觉不是特别好用,就没用)
3.项目结构
4.sqlalchemy列常见参数
选择项 | 说明 |
---|---|
autoincrement | True 是否自增 |
primary_key | True 是否是主键 |
indexE | TRUE 是否是索引 |
unique | True 是否是唯一 |
nullable | True 是否允许字段为空 |
default | 默认值 |
5.字段类型
类型名称 | python类型 | 描述 |
---|---|---|
Integer | int | 常规整型,通常为32位 |
SmallInteger | int | 短整型,通常为16位 |
BigInteger | int或long | 精度不受限整型 |
Float | float | 浮点型 |
Numeric | decimal | 定点数 |
String | str | 可变长度字符串 |
Text | str | 可变长度字符串,适合大量文本 |
Unicode | unicode | 可变长度Unicode字符串 |
Boolean | bool | 布尔值 |
Date | datetime.date | 日期类型 |
Time | datetime.time | 时间类型 |
DateTime | datetime.datetime | 日期时间类型 |
Interval | datetime.timedate | 时间间隔 |
Enum | str | 字符列表 |
PickleType | 任意Python对象 | 自动Pickle序列化 |
LargeBinary | str | 二进制 |
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 为SQLAlchemy设置地址,注意设置格式
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://账号:密码@地址:端口/数据库名'
# 设置为不可动态删除
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# 建一个表对象进行数据库的处理
# 这里需要使用一个模型
class User(db.Model):
__tablename__='users'
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
name = db.Column(db.String(80))
def __init__(self, name):
self.name = name
def __repr__(self):
return '<id : %r , User : %r>' % (self.id, self.name)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
# 从数据库删除所有表
db.drop_all()
# 创建所有表
db.create_all()
# 插入操作1,插入单个数据
admin = User(name='admin') # 创建一个叫admin的User
db.session.add(admin) # 将该User添加到数据库
db.session.commit() # 提交会话
# 插入操作2,插入多个数据
guest = User(name='guest') # 创建一个叫guest的User
test = User(name='test') # 创建一个叫test的User
db.session.add_all([guest, test]) # 将该这些对象添加到数据库
db.session.commit() # 提交会话
# 删除操作
db.session.delete(admin)
db.session.commit()
# 查询操作
# 查询表内所有内容
res = User.query.all()
print("查询表内所有内容"+str(res))
# 只显示第一个
res = User.query.first()
print("只显示第一个"+str(res))
# 按照条件查询
res = User.query.filter_by(name='test').all()
print("按照条件查询"+str(res))
# 逻辑非
res = User.query.filter(User.name != 'test').all()
print('逻辑非'+str(res))
# 取反
from sqlalchemy import not_
res = User.query.filter(not_(User.name != 'test')).all()
print('取反'+str(res))
# 逻辑与
from sqlalchemy import and_
res = User.query.filter(and_(User.id == 3, User.name == 'test')).all()
print('与'+str(res))
# 逻辑或
from sqlalchemy import or_
res = User.query.filter(or_(User.name == 'guest', User.name == 'test')).all()
print('与'+str(res))