热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【48】在flask中使用SQLALchemy连接sqlite数据库

方法:1配置数据库basediros.path.abspath(os.path.dirname(__file__))#获取当前文件的绝对路径appFlask(__name__

方法:

1 配置数据库

basedir= os.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径

app = Flask(__name__)

# 拼接数据库的URL路径

#  os.path.join 把basedir和data.sqlite的路径拼接起来#

# data.sqlite为数据库文件,若该文件夹下没有这个文件会自动创建

app.config[‘SQLALCHEMY_DATABASE_URI’] =\

‘sqlite:///’+ os.path.join(basedir,’data.sqlite’)

# 配置这个键之后,每次请求结束之后都会提交数据库的变动

app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN’] =True

db = SQLAlchemy(app)

2 定义模型

# 定义模型

# db.Model是一个基类

classRole(db.Model):

# 对应的数据库表明

__tablename__ =’roles’

# 设置字段格式

id = db.Column(db.Integer,primary_key=True)

name = db.Column(db.String(64),unique=True)

# 创建与其他表的关系

users = db.relationship(‘User’,backref=’role’,lazy=’dynamic’)

def__repr__(self):

return”%self.name

classUser(db.Model):

__tablename__ =’users’

id = db.Column(db.Integer,primary_key=True)

username= db.Column(db.String(64),unique=True,index=True)

role_id = db.Column(db.Integer,db.ForeignKey(‘roles.id’))

def__repr__(self):

return”%self.username

3 操作数据库

db.create_all()

总结:

1 调试代码遇到问题,要先把代码本身什么意思搞清楚,再想解决办法

在调试数据库连接时遇到:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

网上说可能是路径不对,我就开始修改

‘sqlite:///’

这部分的内容,添加各种路径,然而却没有注意到这部分的内容

os.path.join(basedir,’data.sqlite’)

这部分就是文件的路径了,我在 ‘sqlite:///’怎么加路径都不可能正确啊,吸取这次教训

2 遇到问题多看官方的api文档,基本的问题上面都有说明,在网上看的答案不一定适合现在的版本

3 在设置路径时,路径中不能有空格符,有空格的符的话也会报错


推荐阅读
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文详细解析了Java中hashCode()和equals()方法的实现原理及其在哈希表结构中的应用,探讨了两者之间的关系及其实现时需要注意的问题。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了Memcached的内存管理机制,特别是其采用的Slab Allocator技术。该技术通过预分配不同大小的内存块来有效解决内存碎片问题,并确保高效的数据存储与检索。文中详细描述了Slab Allocator的工作原理、内存分配流程以及相关的优化策略。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
author-avatar
手机用户2502905845
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有