zoukankan      html  css  js  c++  java
  • 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() 
    
  • 相关阅读:
    华为云垃圾分类大赛,让AI 帮你“见圾行事”
    【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
    Ubuntu 配置网卡信息
    配置 Mysql 支持远程访问 并取消域名解析以提高链接速度
    jQuery 操作 html5 data-* 属性
    Laravel 中使用原生的 PHPExcel
    Laravel 上使用 phpexcel的两种方式
    debian中默认不存在sudo命令解决方法
    composer install 时,提示:Package yiisoft/yii2-codeception is abandoned, you should avoid using it. Use codeception/codeception instead.的解决
    Linux 磁盘分区存放文件和目录的数量 (inode)
  • 原文地址:https://www.cnblogs.com/wangxiaobei2019/p/12259687.html
Copyright © 2011-2022 走看看