flask_sqlalchemy简单用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask_sqlalchemy简单用法相关的知识,希望对你有一定的参考价值。
说明
??SQLAlchemy 是 Python 的 ORM 框架,它的理念是:数据库的量级和性能重要于对象集合,而对象集合的抽象又重要于表和行
1、安装
python: 3.6
flask: 1.0.2
flask_sqlalchemy: 2.3.2
环境windows pycharm
安装 -- 点击 file -- settings -- project py -- project interpreter 点击+号
需要安装:pymysql flask flask_sqlalchemy
2、文件结构
??
2.1、数据库连接
1、conf.ini文件
[db]
NAME=test # 数据库帐号
PASSWD=test # 数据库密码
IPADDR=192.168.9.224 #连接地址
PORT=3306 # 端口
DATABASE=test # 数据库
2、model.py文件 用于连接数据库
# Flask类是flask框架的核心类,它实现了wsgi应用规范
from flask import Flask
# 引用SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
import configparser
# 打开文件并获取文件
cf=configparser.ConfigParser()
cf.read("conf.ini")
NAME = cf.get(‘db‘,‘NAME‘)
PASSWD = cf.get(‘db‘,‘PASSWD‘)
IPADDR = cf.get(‘db‘,‘IPADDR‘)
DATABASE = cf.get(‘db‘,‘DATABASE‘)
# 新建app对象
app = Flask(__name__)
# 加载配置信息,其中有数据库的配置信息,包含在SQLALCHEMY_DATABASE_URI中
app.config[‘SQLALCHEMY_DATABASE_URI‘] = "mysql+pymysql://%s:%[email protected]%s/%s"%(NAME, PASSWD, IPADDR, DATABASE)
# 调试信息,如果不开会报错,true会占用内存
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True
# 将创建的flask框架与工程所需要使用的数据库绑定到一起,
db = SQLAlchemy(app)
# 如果定义在上面会因为db参数还没有创建,直接引会的话会报错
# 1、如果你打算在该文件引用User类,请保证全局引用
# 2、无论放在哪里,至少要在db = SQLAlchemy(app)执行后,生成db对象才能进行引用,否则会导致model.py文件执行错误。
from createtb import CreateTb
# 手动创建函数,以便初始化数据
def db_init():
db.create_all()
# 最后还需要执行初始化函数
db_init()
2.2、创建表文件
1、createtb.py
# 引入model文件中的db函数
from model import db
class CreateTb(db.Model):
__tablename__ = ‘createtb‘
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(30),unique=True)
addr = db.Column(db.String(30),unique=True)
def __init__(self, name, addr):
self.name = name
self.addr = addr
#为以后调试输出提供接口
def __repr__(self):
return ‘<name %r>‘ % self.name
db.Column说明
Integer 存储整数
String(size) 存储有长度的字符串
unique 唯一键
autoincrement 自动增长
primary_key 主键
2.3、启动
1、start.py 用于打开web站点,并创建数据库
from model import app
# 路由至首页,显示hello flask
@app.route(‘/‘)
def hello():
return "hello flask"
#启动app
if __name__ == ‘__main__‘:
app.run()
app.debug = True
2.4、最终效果
启动start.py
web查看效果
查看db
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| createtb |
+----------------+
mysql> desc createtb;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | UNI | NULL | |
| addr | varchar(30) | YES | UNI | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
3、增删查
# 引用model文件, createtb已经引入到model文件中了 如果在引用createtb就会重复运行。
from model import CreateTb,db
# 查询全部
for user in CreateTb.query.all():
print(user.id, user.name, user.pwd)
"""
1 xiong1 123456
2 xiong2 123456
3 xiong3 123456
"""
# 精确查询
# u = CreateTb.query.filter_by(name=‘xiong1‘).first()
# print(u.pwd)
# 模糊查询
# for pwd in CreateTb.query.filter(User.pwd.ilike(‘%123%‘)).all():
# print(pwd.pwd, pwd.name)
# update 更新操作
# 解释起来就是首先将对象查询出来,然后将修改的字段赋值,并将查询出的对象提交到数据库,这样更新操作就结束了。
# u = CreateTb.query.filter_by(name=‘xiong1‘).first()
# u.pwd = 321123
# db.session.add(u)
# db.session.commit()
# delete
u = CreateTb.query.filter_by(name=‘xiong1‘).first()
db.session.delete(u)
db.session.commit()
4、参考文档
??flask-sqlalchemy快速入门 - sqlachemy增删查 - 安装步骤说明特别细的
最后附上代码密码:z6r0
以上是关于flask_sqlalchemy简单用法的主要内容,如果未能解决你的问题,请参考以下文章
Flask(flask_sqlalchemy)使用原生sql,多个数据库用法进行封装
深入浅出Flask(47):flask_sqlalchemy的应用动态绑定
使用 flask_sqlalchemy 将 HTML 表单中的日期插入 SQlite 数据库