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

安装

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

 

传统的sql建表建字段

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

 

通过flask-SQLAlchemy建表建字段

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

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

flask-SQLAlchemy建表建字段

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

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

触发

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

现在状态是没有数据库的

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

访问

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

数据库已生成

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

打开,字段创建成功

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

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
)

 

插入数据

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

 

查询所有

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

 

查询一条

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

 

改:

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

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()

渲染到前台页面

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

# 展示所有用户信息
@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

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

<!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>

测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

 

相关文章:

  • 2021-05-23
  • 2021-10-10
  • 2022-12-23
  • 2021-06-13
  • 2020-01-10
  • 2022-02-01
  • 2021-06-21
猜你喜欢
  • 2021-07-24
  • 2022-03-07
  • 2022-12-23
  • 2021-10-01
  • 2021-05-31
  • 2021-05-25
相关资源
相似解决方案