基于Flask+flask-sqlalchemy使用MySql数据库

环境方面Python版本3.72,虚拟环境virtualenvwrapper,Flask版本1.1.1,Flask-SQLAlchemy 2.4.1

  • 首先进入你的虚拟环境,安装相应的库,推荐使用豆瓣源安装,不过多解释

pip install flask
pip install flask-sqlalchemy

  • 导入库
from flask_sqlalchemy import SQLAlchemy
  • 步骤3 - 现在创建一个Flask应用程序对象并为要使用的数据库设置URI。
app = Flask(__name__)
#这里是默认连接的是sqllite
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
#接下来是mysql
#app.config['SQLALCHEMY_DATABASE_URI'] = '数据库类型://数据库登录名:数据库登录密码@数据库的地址:数据库的端口/数据库的名字'
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://root:[email protected]:3306/test?charset=utf8'
#postgresql
app.config['SQLALCHEMY_DATABASE_URI'] ='postgresql://username:password@host/database'
  • 创建模型文件
db = SQLAlchemy(app)
class User(db.Model):
   id = db.Column('uid', db.Integer, primary_key = True)
   name = db.Column(db.String(100))
   city = db.Column(db.String(50))  
   addr = db.Column(db.String(200))

def __init__(self, name, city, addr):
   self.name = name
   self.city = city
   self.addr = addr

  • 数据库字段配置项
配置 说明 默认值
autoincrement 是否自增 False
primary_key 主键 False
indexE 索引 False
unique 是否唯一 False
nullable 允许字段为空 False
default 是否自增
  • 字段类型
类型 描述 对应mysql
Integer 32位整型 int
SmallInteger 32位 整型 smallint
BigInteger 精度不受限整型 bigint
Float 浮点型 float
Numeric 定点数 numeric
String 可变长度字符串 varchar
Text 文本 text
Unicode 可变长度Unicode字符串
Boolean 布尔值
Date 日期
Time 时间
DateTime 文本
Interval 时间间隔
Enum 枚举
LargeBinary 二进制
  • 操作数据库
# creat
create_user = User(name='张三', city='广州市猎德村')
db.session.add(create_user)
db.session.commit()

#3.select
User.query.all() #查询所有
User.query.filter_by(name='张三').first()#条件查询
User.query.order_by(User.id).all()#排序查询
User.query.limit(1).all()#查询1条
User.query.get(id = 1)#精确查询

#update
getuser = User.query.get(1)
getuser.name = "李四"
db.session.commit()

# 4.delete
user = User.query.get(1)
db.session.delete(user)
db.session.commit()

#统计
User.query.filter_by(city = "广州").count()
from sqlalchemy import func
User.query.with_entities(func.sum(User.id)).filter(User.id > 1).scalar()

#分页
User.query.paginate()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章