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

posted on 2020-02-04 15:42  wangxiaobei2019  阅读(212)  评论(0编辑  收藏  举报

导航