zoukankan      html  css  js  c++  java
  • 测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

    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>

  • 相关阅读:
    Mongodb--基础(连接,增删改查,数据类型)
    [初识]使用百度AI接口,图灵机器人实现简单语音对话
    python--Websocket实现, 加密 sha1,base64
    Flask系列10-- Flask请求上下文源码分析
    python--partial偏函数
    Flask系列09--Flask中WTForms插件,及自定义验证器
    Flask系列08--Flask中flask_session, redis插件
    Flask系列07--Flask中的CBV, 蓝图的CBV
    Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
    Flask系列05--Flask的配置config
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11494482.html
Copyright © 2011-2022 走看看