笔记一:
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进行更精确查询

flask 数据库一节笔记的更多相关文章

  1. 实验3、Flask数据库操作-如何使用Flask与数据库

    1. 实验内容 数据库的使用对于可交互的Web应用程序是极其重要的,本节我们主要学习如何与各种主要数据库进行连接和使用,以及ORM的使用 2. 实验要点 掌握Flask对于各种主要数据库的连接方法 掌 ...

  2. mySQl数据库的学习笔记

    mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...

  3. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  4. 天兔(Lepus)数据库监控系统安装笔记

    天兔(Lepus)数据库监控系统安装笔记 一.部署:本次操作系统:centos6.9 IP:192.168.153.145Lepus_v3.8_beta MySQL-python-1.2.5xampp ...

  5. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  6. Oracle数据库备份还原笔记

    Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...

  7. Flask RESTful API搭建笔记

    之前半年时间,来到项目的时候,已经有一些东西,大致就是IIS+MYSQL+PHP. 所以接着做,修修补补,Android/iOS与服务器数据库交换用PHP, Web那边则是JS+PHP,也没有前后端之 ...

  8. 测试Flask应用_学习笔记

    源代码尽在我的github上面:https://github.com/521xueweihan 欢迎大家交流学习 """ setUp() 方法中会创建一个新的测试客户端并 ...

  9. 细说flask数据库迁移

    什么情况下要用数据库迁移? 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据. 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化 ...

随机推荐

  1. 最新版的Dubbo Admin 3.0 本地启动方式

    项目下载 项目地址:https://github.com/apache/dubbo-admin 如下图,使用git地址直接构建或者下载zip包构建源码都可以,我用的是下载的zip包, 项目架构说明 d ...

  2. Spring MVC项目快速搭建(编程模型)

    1)配置DispatcherServlet前端控制器(web配置) 2)将xml文件路径告诉Spring MVC(DispatcherServlet) 以上两步等价于继承了WebApplication ...

  3. [题解]UVA10986 Sending email

    链接:http://vjudge.net/problem/viewProblem.action?id=24941 描述:n个点,m条边的无向图,寻找从S到T的最短路. 思路:基础的单源点最短路 用Di ...

  4. 网络之IP地址、子网掩码、网关关联

    IP地址?子网掩码? 网关?我们经常混淆这些知识,同时面试的时候又容易被问.下面我们就一个一个的来介绍他们的区别和用途. 网络无处不在,深深影响着我们的生活.而下面几点知识是我们在网络学习中经常遇到的 ...

  5. kubernetes用户使用token安全认证教程

    kubernetes server account的token很容易获取,但是User的token非常麻烦,本文给出一个极简的User token生成方式,让用户可以一个http请求就能获取到. to ...

  6. C# 枚举器(enumerator)

    总结: 1.枚举器就像是序列中的"游标"或"书签".可以有多个"书签",移动其中任何一个都可以枚举集合,与其他枚举器互不影响.用来遍历数据结 ...

  7. 【C# 线程】Windows系统下常见的7种I/O模型 之Overlapped I/O模型

    overview 这个字符到底是什么含义呢?其实它的意思就是当程序在等待设备操作的时候,可以继续往下做而不必阻塞到那个地方等待设备操作的返回,这就造成了程序运行和设备操作时间上的重叠.  Overla ...

  8. StringBuilder与String互转

    StringBuilder类是一个可变的字符序列. StringBuilder()           构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符.StringBuilder(Ch ...

  9. netty系列之:EventExecutor,EventExecutorGroup和netty中的实现

    目录 简介 EventExecutorGroup EventExecutor EventExecutorGroup在netty中的基本实现 EventExecutor在netty中的基本实现 总结 简 ...

  10. linux-noshell的模式

    转至:https://blog.csdn.net/ifubing/article/details/95509981 noshell 创建两个用户,一个直接创建,一切按默认的来 另一个创建时指定一下no ...