• flask-sqlalchemy使用记录


    近期项目需要在Beagleboneblack上进行开发,利用Python进行算法处理,sqlite进行数据管理,为了更加标准和稳定,同时需要配合前端,所以需要学习flask-sqlalchemy

    flask-sqlalchemy 和 sqlalchemy

    • SQLAlchemy:
      SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。一句话:就是对数据库的抽象!
    • Flask-SQLAlchemy:
      Flask-SQLAlchemy是一个简化了 SQLAlchemy 操作的flask扩展,是SQLAlchemy的具体实现,封装了对数据库的基本操作。

    总之flask-sqlalchemy会让你在操作数据库时更加方便

    安装

    pip isntall flask-sqlalchemy
    

    使用

    • 首先需要连接数据库 并建立数据库表的模型(建立映射关系) database.py
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    # 连接数据库
    """
    (1)MySQL: mysql://username:password@hostname/database
    (2)SQLite(Unix): sqlite:////absolute/path/to/database
    (3)SQLite(Windows): sqlite:///c:/absolute/path/to/database
    (4)Oracle: oracle://username:password@127.0.0.1:3306/database
    """
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///E:/Flask_sqlite/flask_test.db'
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
    db = SQLAlchemy(app)
    
    # 新建用户
    class User(db.Model):
        """
        用户表
        """
        __tablename__ = 'user'
        id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        name = db.Column(db.String(20), nullable=False)  # 用户姓名
        age = db.Column(db.Integer, nullable=False)  # 用户年龄
    
    # 新建文章model
    class Article(db.Model):
        """
        文章表
        """
        __tablename__ = 'article'
        id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        title = db.Column(db.String(20), nullable=False)  # 文章标题
        body = db.Column(db.String(255), nullable=False)  # 文章内容
        last_change_time = db.Column(db.DateTime, nullable=False) # 最后一次修改日期
        author_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 作者
        author = db.relationship('User', backref=db.backref('articles'))
    
    # 新建文章修改日志
    class ChangeLogs(db.Model):
        """
        修改日志
        """
        __tablename__ = 'change_logs'
        id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        author_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 作者
        article_id = db.Column(db.Integer, db.ForeignKey('article.id'))  # 文章
        modify_content = db.Column(db.String(255), nullable=False)  # 修改内容
        create_time = db.Column(db.DateTime, nullable=False) # 创建日期
    
    if __name__ == '__main__':
        main()
    
    • 数据库的写入和读取
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from database import db
    from database import User
    #获取数据库中的指定数据
    def Getnum():
        users = User.query.all()  # 查询所有记录
        for user in users:
            print(user.name)
    # 写入数据
    def CreatTabel():
        db.create_all()
        new_user_qin = User(name='wang', age=26)
        new_user_zhang = User(name='xiao', age=26)
        new_user_xiong = User(name='bei', age=24)
    
        db.session.add_all([new_user_qin, new_user_zhang, new_user_xiong])
        db.session.commit()
    def main():
        # CreatTabel()
        Getnum()
    if __name__ == '__main__':
        main() 
    
  • 相关阅读:
    js异步编程
    gitreset
    js数据类型
    vuex报错
    个人管理系统综述
    ffmpeg第7篇:数据流选择神器map指令
    eltable多选框根据条件隐藏显示
    [域渗透内网渗透] 从 web 到域控,你未曾设想的攻击链
    宽字节第二期线下培训开始招生啦!!!
    cve20212394 weblogic反序列化漏洞分析
  • 原文地址:https://www.cnblogs.com/wangxiaobei2019/p/12259687.html
Copyright © 2020-2023  润新知