笔记一:
os.path的用法:
1. os.path.dirname(__file__)   返回当前脚本的执行路径,__file__为固定参数
2. os.path.abspath(file)          返回文件在当前环境中的绝对路径
3. os.path.join(basedir, file)    将file的路径设置为basedir所在的路径笔记二:
Flask_SQLAlchemy数据库URL:
MySQL                  mysql://username:password@hostname/database
SQLite(Unix)           sqlite:////absolute/path/to/database
SQLite(Windows)        sqlite:///c:/absolute/path/to/database笔记三:
常用的SQLAlchemy列类型如下:
Integer   int                             普通整数
Float     float                              浮点型
String    str                               变长字符串
Text      str                                 做优化的变长字符串
Boolean   bool                          布尔值
Date      datetime.date                 日期
Time      datatime.time                 时间
Interval  datetime.timedelta      时间间隔SQLAlchemy列配置选项:
primary_key  如果为True,这列就是主键
unique          如果为True,这列不允许出现重复值
index            如果为True,这列创建索引,提升查询效率
nullable        如果为True,这列允许出现空值
dafault         为这列定义默认值笔记四:
__repr__方法用于显示值,相似方法还有__str__,但前者更偏向开发人员(准确性),后者更偏向用户笔记五:
imp是标准库模块,可以对模块进行创建、载入等操作,可以用exec执行模块文件笔记六:
可使用db.relationship()把数据库的不同行联系起来,建立一对多的关系,db.relationship()的第一个
参数表明关系的另一端是哪个模型,其他可选参数如下:
backref            在关系的另一个模型中添加反向引用
primaryjoin      明确两个模型之间使用的联结条件
lazy                 指定如何加载相关记录,可选值有select(首次访问时加载)、immediate(源对象加载后加载)、
                       joined(加载记录,但使用联结)、subquery(立即加载,但使用子查询),noload(永不加载)、
                       dynamic(不加载记录,但提供加载记录的查询)
uselist             如果设为False,不适用列表而使用标量
order_by         指定关系中记录的排序方式
secondary       指定多对多关系中关系表的名字
secondaryjoin  指定多对多关系中的二级联结条件用SQLAlchemy管理数据库的步骤:
1. 配置数据库:
   ①设置数据库SQLALCHEMY_DATABASE_URI (必须)
   ②设置数据库迁移文件路径SQLALCHEMY_MIGRATE_REPO(自动更新数据库变动)2. 初始化数据库(用SQLAlchemy()创建一个db对象)
3. 创建数据库模型
   用类来创建数据库模型,用__repr__方法打印类的对象,便于调试4. 创建数据库
   用SQLAlchemy_migrate创建支持升级的数据库
   从migrate.versioning导入api
   api.create()
   api.version_control()5. 创建迁移脚本
   ...
   使用migrate.versioning模块api方法的upgrate()升级数据库,downgrate()回退数据库6. 建立数据库中表的对应关系
   用db.relationship()、外键等建立关系7. 用session会话对数据库进行操作,最后必须使用db.session.commit()才生效
   db.session.add()      更改
   db.session.delete()   删除行
   query.all()           查询,可使用过滤器filter_by进行更精确查询