当前位置: 首页 > news >正文

flask_sqlalchemy

create_engine,用这个函数来创建引擎,然后用engine.connect()来连接数据库。

engine = create_engine(DB_URI)

DB_URI 是以下格式的字符串

dialect+driver://username:password@host:port/database

  1. dialect 是数据库的实现,比如MySQ、PostgreSQL、SQLite
  2. driver是Python对应的驱动,如果不指定,会选择默认的驱动,比如MySQL的默认驱动是MySQLdb。(MySQLdb不可用,需用pysql)
  3. usename 是连接数据库的用户名
  4. password 是连接数据库的密码
  5. host 是连接数据库的域名
  6. port 是数据库监听的端口号
  7. database 是连接那个数据库的名字

与flask使用时需要将上面的那个字符串添加到config.py中,以SQLALCHEMY_DATABASE_URI为名,再添加一个配置SQLALCHEMY_TRACK_MODIFICATIONS = False

from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)#为app添加配置
db = SQLAlchemy(app)#用SQLAlchemy初始化
db.create_all()#用于测试配置

分开models和解决循环引用

db放在一个单独的文件中,切断引用线条就可以了。

关键在于使用db.init_app(app)初始化db

#models_sep.py
from flask import Flask
from exts import db
import config

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)

@app.route('/')
def hello_world():
    return "hello world"

if __name__ == '__main__':
    app.run()
# models.py
from exts import db

class Article(db.Model):
    __tablenaem = 'article
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
# exts.py
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
# config.py
SQLALCHEMY_DATABASE_URI = 'mysql+mysqldb://root:password@127.0.0.1:3306/a_database'
SQLALCHEMY_TRACK_MODIFICATIONS = False

使用Flask-SQLAlchemy创建模型与表的映射:

  1. 模型需要继承db.Model,然后映射到表的属性必须写成db.Column的数据类型。
  2. 数据类型
  • db.Integer 代表的是整型
  • db.String 代表的是 varchar, 需要指定最长的长度
  • db.Text 代表的是 text
  1. 其他参数:
  • primary_key
  • autoincrement
  • nullable
  1. 最后需要调用db.create_all将模型创建到数据库中。

 增查改删

article1 = Article(title='aaa', content='bbb')
db.session.add(article1)
db.session.commit()
result = Article.query.filter(Article.title == 'aaa').first()
print(result.title)
article1 = Article.query.filter(Article.title == 'aaa').first()
article1.title = 'new title'
db.session.commit()
article1 = Article.query.filter(Article.content == 'bbb').first
db.session.delete(article1)
db.session.commit()

转载于:https://www.cnblogs.com/ravener/p/9807041.html

相关文章:

  • Python语言程序设计基础(3)—— 基本数据类型
  • c# 反射实现模型深拷贝
  • 迅速上手:使用taro构建微信小程序基础教程
  • 第二次做HDOJ 1051
  • Python学习-第2课(函数,函数文档)
  • P2245 星际导航
  • 漫步Java------初识java
  • Web负载均衡
  • 关于VSCode自动缩进/格式化复制粘贴的代码
  • 深入浅出的webpack4构建工具---比mock模拟数据更简单的方式(二十一)
  • Vulnhub Breach1.0
  • Python配置处理ini文件-configparser
  • Children's Game UVA - 10905
  • 搭建ssh框架项目(三)
  • 汇编实验二
  • 【刷算法】从上往下打印二叉树
  • 2019年如何成为全栈工程师?
  • 78. Subsets
  • Java读取Properties文件的六种方法
  • Median of Two Sorted Arrays
  • SwizzleMethod 黑魔法
  • windows-nginx-https-本地配置
  • 技术:超级实用的电脑小技巧
  • 力扣(LeetCode)21
  • 面试总结JavaScript篇
  • 函数计算新功能-----支持C#函数
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (12)Linux 常见的三种进程状态
  • (4)(4.6) Triducer
  • (二)斐波那契Fabonacci函数
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (五)Python 垃圾回收机制
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)visual stdio 书签功能介绍
  • .jks文件(JAVA KeyStore)
  • .mysql secret在哪_MySQL如何使用索引
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @ConditionalOnProperty注解使用说明
  • @Pointcut 使用
  • [20150321]索引空块的问题.txt
  • [2018-01-08] Python强化周的第一天
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [APIO2015]巴厘岛的雕塑
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BT]BUUCTF刷题第8天(3.26)
  • [Docker]十二.Docker consul集群搭建、微服务部署,Consul集群+Swarm集群部署微服务实战
  • [EWS]查找 文件夹
  • [javascript]Tab menu实现
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [LeetCode]—Permutations II 求全排列(有重复值)
  • [NOI2014]购票