flask-SQLAlchemy是在原生SQLAlchemy的基础之上做了一层封装,安装flask-SQLAlchemy会自动安装SQLAlchemy

安装

传统的sql建表建字段

通过flask-SQLAlchemy建表建字段

用法:声明和初始化一系列的配置

flask-SQLAlchemy建表建字段

db.String()  整形
db.Integer() 字符串
db.TEXT() 文本
db.DateTime() 日期时间
db.Float() 浮点
db.Boolean() 布尔
db.PickleType() pickle序列对象
db.LargeBinary() 大二进制对象

触发

现在状态是没有数据库的

访问

数据库已生成

打开,字段创建成功

from datetime import datetime
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 初始化app """
SQLAlchemy_DATABASE_URI:指定数据库地址,SQLAlchemy的固定字段
sqlite: sqlite:///数据库路径/数据库.db
基本形式:
mysql/oracle+驱动://用户名:密码@主机:端口/数据库
mysql数据库:mysql://root:123@127.0.0.1:3306/my_db
"""
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./db/test.db' # 声明数据库类型和地址
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True # 跟踪改变
app.config['SQLALCHEMY_ECHO'] = True # 打印对应的sql,此操作用sql是怎么样的
db = SQLAlchemy(app) # 创建数据库核心对象并把数据库和app关联起来
"""
sql实现建表建字段:
crate table User(
id INTEGER Primary Key,
username TEXT,
email TEXT,
password TEXT,
create_time DATETIME
);
""" # SQLAlchemy实现建表建字段
class User(db.Model):
__tablename__ = 'user' # 表名
id = db.Column(db.Integer, primary_key=True) # id字段,integer类型,主键
username = db.Column(db.String(50), unique=True) # 50个字符长度 unique=True 唯一
email = db.Column(db.String(200), unique=True)
password = db.Column(db.String(100))
create_time = db.Column(db.DateTime, default=datetime.now) # 给个默认值为datetime.now def __init__(self, username, email, password, create_time=datetime.now()):
self.username = username
self.email = email
self.password = password
self.create_time = create_time def __repr__(self):
return f'用户:{self.id}, {self.username}, {self.password}, {self.email}' # 访问接口时,创建数据库
@app.route('/db/')
def initialize_db():
db.create_all() # 执行建表操作
return 'ok' if __name__ == '__main__':
app.run(
debug=True
)

插入数据

查询所有

查询一条

改:

from main import *

# 增
u = User('tom1', 'tom@tom.com', '123456')
db.session.add(u)
db.session.commit() u2 = User('jerry1', 'jerry@jerry.com', '123456')
db.session.add(u2)
db.session.commit() # 查询所有
for u in db.session.query(User).all():
print(u) # 查询一条
user = db.session.query(User).filter(User.id == 2).one()
print(user) # 改
user = db.session.query(User).filter(User.id == 2).one()
user.password = '654321'
db.session.commit()

渲染到前台页面

# 展示所有用户信息
@app.route('/users/')
def user_list():
users = db.session.query(User).all()
print(users)
return render_template('user-list.html', users=users)

user-list.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户信息</title>
</head>
<body>
<h2>用户信息</h2>
<table border="1">
<tr>
<td>ID</td>
<td>姓名</td>
<td>邮箱</td>
<td>密码</td>
<td>创建时间</td>
</tr>
{% for user in users %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
<td>{{ user.password }}</td>
<td>{{ user.create_time }}</td>
</tr>
{% endfor %}
</table> </body>
</html>

最新文章

  1. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
  2. 【Java心得总结六】Java容器中——Collection
  3. 断言与异常(Assertion Vs Exception)
  4. IOS开发基础知识--碎片42
  5. 2016年发布APASVO-p波震相自动拾取分析
  6. 控制点:ControlPoint
  7. 多尺度二维离散小波重构waverec2
  8. BroadcastReceiver简单应用实例
  9. ubuntu更换阿里源
  10. 采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发
  11. BZOJ5254 : [Fjwc2018]红绿灯
  12. 在docker上部署mysql
  13. recv() failed (104: Connection reset by peer) while reading response header from upstream
  14. Spring @Resource,@Autowired,@Qualifier的注解注入和区别
  15. 音频标签化3:igor-8m项目的训练、评估与测试
  16. Day6------------复习
  17. hdu4122
  18. maven 下载jar失败: Missing artifact javax.jms:jms:jar:1.1
  19. JavaScript对象与JSON字符串的相互转换
  20. SDN期末验收

热门文章

  1. lnmp 环境搭建后,pathinfo 模式支持的配制。
  2. 014-Zabbix的自动发现
  3. nslookup 工具的使用方法记录
  4. hdu 6205 card card card 最大子段和
  5. qt常用技巧
  6. 如何使用hook(非注入dll)
  7. HDU-4289-Control(最大流最小割,拆点)
  8. mysql参数sql_log_bin配置
  9. 《SaltStack技术入门与实践》—— Peer
  10. 中南林业大学校赛 I 背包问题 ( 折半枚举 || 01背包递归写法 )