参考它的文档,创建如下示例:
encoding:utf8
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
a = os.path.dirname(__file__)
basedir = os.path.abspath(os.path.dirname(__file__))#获取当前文件的目录,用以存放data.sqlite文件
app = Flask(__name__)
db = SQLAlchemy(app) #初始化
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')#配置文件储存目录
class User(db.Model):
__tablename__ = 'users'#表名
id = db.Column(db.Integer,primary_key=True)#id行
username = db.Column(db.String(80),unique=True)#username行
email = db.Column(db.String(120),unique=True)
def __init__(self,username,email):
#经过测试,初始化函数可以不要,继承的db.Model类会自动帮你创建
self.username = username
self.email = email
def __repr__(self):
#返回一个官方的说明类的字符(相当于给str加引号)
return '<User %r>' % self.username
在shell环境中操作数据库:
from ceshi import db
from ceshi import User
db.create_all() #执行这一句之后会有data.sqlite文件生成
wsj = User(username=’wsj’,email=’example@aa.com’)#根据模型创建一个实例,这时候和数据库没有任何关系。
aaa = User(username=’aaa’,email=’aaa@aaa.com’)
db.session.add(wsj)#将数据放到session里,和git中的暂存区相似
db.session.add(aaa)
db.session.commit()#存入内存,相当于git commit -m
至此,已经完成了数据的存贮,怎么读取呢?
>>> from ceshi import db
>>> from ceshi import User
#模型是必须导入的,我们是通过模型完成和数据库的交互
>>> db.create_all()
>>> User.query.all()
#最简单的一句查询语句,其他道理和这个一样
>>> a = User.query.all()
>>> a
[<ceshi.User object at 0x0000000003BE0DD8>, <ceshi.User object at 0x0000000003BE0E48>]
#为什么显示的是内存地址,因为lazy参数的原因(原理:因为IO的速度比较慢并且占用运行内存,所以它默认在你查询的时候返回的是内存地址,当你需要读取数据的时候它才进行读取,这个可以根据lazy的参数改变)
>>> a[1]
<ceshi.User object at 0x0000000003BE0E48>
>>> a[1].username
#通过属性的形式读取数据
u'aaa'