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) 编辑 收藏 举报