sqlalchemy是一个关系型数据库框架,它提供了高层的ORM 和底层的原生数据库的操作。

sqlalchemy实际上是对数据库的抽象,通过python对象操作数据库,提高开发效率。

安装 flask_sqlalchemy

pip  install flask-sqlalchemy

如果链接是MySQL数据库,需要安装mysqldb

pip install flask-myasldb

数据库连接设置

数据库使用url指定时,程序使用的数据库必须保存到flask配置对象的SQLALCHEMY_BATABASE_URL建中

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'
动态追踪修改设置,如果没有设置提示警告
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
查询时显示原始SQL数据
app.config['SQLALCHEMY_ECHO'] = True
 
其他设置

 
 
 
 
当配置完成时,需要去MySQL中创建项目中要使用的数据库
进入MySQL命令 : mysql -uroot -p(密码)  (密码一般是mysql)
 
 连接其他数据库
完整连接url 列表请跳转到sqlalchemy下面的文档,常见的连接字符串有:
 Postgres, Mysql; Oracle; SQLite(以sqlite开头是四个斜线)
例:posthresql://scott:localhost/mydatabase

sqlite:////scott:localhost/mydatabase

 mqlalchemy常用的字段类型

 mqlalchemy常用的关系选项

 mqlalchemy常用的列选项
 

 数据库的基本操作
在数据库中可以进行增删改查操作,数据库分为原生的mql 和flask_sqlalchemy 数据库。
在flask_sqlalchemy 数据库中会话使用 db.session表示,在把数据写入数据库前,要先将数据添加到会话中调用commit()方法提交,查询操作是通过query对象操作数据
 
 
 
首先要导入模块
from flask import Flask ,render_template
#导入第三方连接库
from flask_sqlalchemy import SQLAlchemy
 

#创建对象
app = Flask(__name__)
#载入配置文件
app.config.from_pyfile('config.ini')
# #指定数据库连接还有库名
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'
#制定配置,用来省略操作
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
#实例化一个数据库对象
db = SQLAlchemy(app)
#建立一个类来影射数据库表,将数据库的模型作为参数传入
class User(db.Model):
#声明表名
_tablename_ = 'user'
#建立函数字段
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(200))
password = db.Column(db.String(200))
#数据库入库操作
@app.route('/')
def index():
#增,入库逻辑
#声明对象
user = User(name='你好你好',password='456456')
#调用添加方法
db.session.add(user)
# #提交入库
# db.session.commit()
return '这里是首业'
#数据库删除操作
@app.route('/del')
def del_user():
#根据摸个字段作删除,filter_by蕾仕于where条件限定
#翻译为:delete from user where id= 1
User.query.filter_by(id = 1).delete()
return '这里是删除操作'
#数据库改操作(改)
@app.route('/edit')
def edit_user():
#根据摸个字段做修改操作
#翻译为 update user set name = '张三' where id = 8
User.query.filter_by(id = 8).update({'name':'张三'})
 
#使用原生语句进行修改操作
db.session.execute("update user set password = '123321' where id = 9")
return '这里是改操作'
#数据库的查询操作(查)
@app.route('/select')
def select_user():
#简单的全量查询
##翻译为:select * from user
ulist = User.query.all()
print(ulist)
for i in ulist:
print(i.name)
#直取一条
ulist = User.query.first()
print(ulist)
#使用原生的sql语句
#翻译以为: select * from user order by desc limit 1,2
# items = db.session.execute('select * from user order by id desc limit 1,2')
items = db.session.execute('select * from user ')
#将结果集强转为list
items = list(items)
 
 
return render_template('day5.html',items = items)
 

#程序入口

if __name__ == "__main__":
app.run()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

flask写入数据库的更多相关文章

  1. flask 定义数据库关系(一对多)

    定义关系 在关系型数据库中,我们可以通过关系让不同表之间的字段建立联系.一般来说,定义关系需要两步,分别是创建外键和定义关系属性.在更复杂的多对多关系中,我们还需要定义关联表来管理关系.下面我们学习用 ...

  2. Flask之数据库操作

    4.2 数据库基本操作 在Flask-SQLAlchemy中,插入.修改.删除操作,均由数据库会话管理.会话用db.session表示.在准备把数据写入数据库前,要先将数据添加到会话中然后调用comm ...

  3. logback日志写入数据库(mysql)配置

    如题  建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1  logback 配置文件(如下) <?xml version="1.0" encoding ...

  4. Excel 导入到Datatable 中,再使用常规方法写入数据库

    首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...

  5. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename); ...

  6. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  7. SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable

    MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...

  8. jxl读取excel实现导入excel写入数据库

    @RequestMapping(params = "method=import", method = RequestMethod.POST) @ResponseBody publi ...

  9. 将RichTextBox的内容直接写入数据库:

    将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) {    System.IO.Memory ...

随机推荐

  1. Linux软件源书写格式解析及本地yum源制作

    1.Debian类系统 配置文件:/etc/apt/sources.list 例子:deb https://mirrors.aliyun.com/kali kali-rolling main cont ...

  2. 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)

    锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...

  3. JavaScipt 中的事件循环(event loop),以及微任务 和宏任务的概念

    说事件循环(event loop)之前先要搞清楚几个问题. 1. js为什么是单线程的? 试想一下,如果js不是单线程的,同时有两个方法作用dom,一个删除,一个修改,那么这时候浏览器该听谁的?   ...

  4. php把数据转换为json格式

    public function demos(){ $data=[ 'state'=>1, 'msg'=>'更新成功' ]; return json_encode($data); }

  5. C++ 解析一

    C++ 类和对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型.类用于指定对象的形式,它包含了数据表示法和用于处理数据 ...

  6. bzoj1679

    题解: 前缀和 显然需要排序一下 注意爆int这件事 代码: #include<bits/stdc++.h> using namespace std; typedef long long ...

  7. 基于WMI的信息查询和编辑,按微软的说明一般都是

    晕!这个不是很简单的东西吗? //---------WMI---------- type Rec_Wmi = record ComputerName: string; Namespace: strin ...

  8. Centos7 LNMP 一键安装

    首页: https://lnmp.org/ 安装包生成页: https://lnmp.org/auto.html

  9. Java语法基础学习DayThree

    一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...

  10. <spark入门><Intellj环境配置><scala>rk入门><Intellj环境配置><scala>

    # 写在前面: 准备开始学spark,于是准备在IDE配一个spark的开发环境. 嫌这篇格式不好的看这里链接 用markdown写的,懒得调格式了,么么哒 # 相关配置: ## 关于系统 * mac ...