美文网首页
Flask - SQLAlchemy

Flask - SQLAlchemy

作者: SingleDiego | 来源:发表于2018-08-08 09:43 被阅读18次

    要使用 Flask-SQLAlchemy 首先还是要通过 pip 来安装:

    pip install Flask-SQLAlchemy
    

    一个简单的例子,我们新建一个 db_app.py 文件,写入以下代码:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db = SQLAlchemy(app)
    
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(80), unique=True, nullable=False)
        email = db.Column(db.String(120), unique=True, nullable=False)
    
        def __repr__(self):
            return '<User %r>' % self.username
    

    接下来我们需要从交互式 Python shell (或者 ipython)导入我们创建的 db 和 User,来实现创建数据库,创建数据表,增删查改等一系列操作。

    创建数据库和数据表:
    >>> from db_app import db
    >>> db.create_all()
    

    这将会在根目录创建一个 test.db 的 sqlite3 数据库文件,并创建 User 数据表。

    创建用户
    >>> from db_app import User
    >>> admin = User(username='admin', email='admin@example.com')
    >>> guest = User(username='guest', email='guest@example.com')
    
    写入数据库
    >>> db.session.add(admin)
    >>> db.session.add(guest)
    >>> db.session.commit()
    
    查询数据
    >>> User.query.all()
    [<User u'admin'>, <User u'guest'>]
    
    >>> User.query.filter_by(username='admin').first()
    <User u'admin'>
    
    自定义 init 方法

    可以看到我们的 User 类并不需要定义 __init__() 方法来初始化,因为继承的 db.Model 类已经隐含了这一切,如果我们需要自己的__init__() 方法,可以这样做:

    class Foo(db.Model):
        # ...
        def __init__(**kwargs):
            super(Foo, self).__init__(**kwargs)
            # do custom stuff
    




    Column 字段类型参考:

    字段 含义
    Integer 一个整数
    String (size) 有长度限制的字符串
    Text 一些较长的 unicode 文本
    DateTime 表示为 Python datetime 对象的 时间和日期
    Float 存储浮点值
    Boolean 存储布尔值
    PickleType 存储为一个持久化的 Python 对象
    LargeBinary 存储一个任意大的二进制数据

    其余的参数指定属性的配置选项,常用的配置选项如下:

    字段 含义
    primarykey 如果设为True,表示主键
    unique 如果设为True,这列不重复
    index 如果设为True,创建索引,提升查询效率
    nullable 如果设为True,允许空值
    default 为这列定义默认值




    本文源码:https://github.com/SingleDiego/Flask-SQLAlchemy

    相关文章

      网友评论

          本文标题:Flask - SQLAlchemy

          本文链接:https://www.haomeiwen.com/subject/mzhtbftx.html