ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

flask-sqlalchemy使用记录

2020-02-04 15:56:46  阅读:249  来源: 互联网

标签:__ sqlalchemy 记录 flask db Column user id


近期项目需要在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() 

标签:__,sqlalchemy,记录,flask,db,Column,user,id
来源: https://www.cnblogs.com/wangxiaobei2019/p/12259687.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有