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

mvc5网站开发之六东莞松山湖

mvc5网站开发之六,东莞松山湖,wordpress4.9教程pdf,制作小程序网站源码目录 为什么会出现这个问题? 解决方法一:每个请求新建自己的连接(推荐) 解决方法二:允许 SQLite 跨线程使用连接(不推荐) 小结 当你在 python 中使用 Flask 里面调用了数据库的操作的时候&a…

目录

为什么会出现这个问题?

解决方法一:每个请求新建自己的连接(推荐)

解决方法二:允许 SQLite 跨线程使用连接(不推荐)

小结


当你在 python 中使用 Flask 里面调用了数据库的操作的时候:

def main():db = conn("DATABASE.db")Show(db)def Show(db):app = Flask(__name__)@app.route('/')def demo():db.execute("Select * from ***")db.fetchall()

 出现了如下 ERROR:

sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.

这句话的意思是:

  • 你在 一个线程(比如 Flask 启动时的主线程)里创建了 SQLite 的连接或者 cursor(光标对象)。

  • 但你在 另一个线程(比如处理 POST 请求时 Flask 内部新开的线程)去用这个连接或者 cursor。

  • SQLite 默认不允许跨线程使用同一个连接

    SQLite 连接是线程绑定的,不同线程必须用自己的连接。


为什么会出现这个问题?

因为 Flask 默认是多线程运行的,每一个请求(特别是 POST 请求)都可能在不同线程中处理。如果你在 Flask 启动时创建了一个数据库连接并保存成了全局变量,然后在请求里用它,就会出错。


解决方法一:每个请求新建自己的连接(推荐)

最常见的方法是:

  • 每次请求都新建一个连接

  • 用完就关闭连接

可以在 Flask 里这样做:

import sqlite3
from flask import Flask, gapp = Flask(__name__)DATABASE = 'your_database.db'def get_db():if 'db' not in g:g.db = sqlite3.connect(DATABASE)return g.db@app.teardown_appcontext
def close_db(exception):db = g.pop('db', None)if db is not None:db.close()@app.route('/your_route', methods=['POST'])
def your_post_handler():db = get_db()cursor = db.cursor()cursor.execute('YOUR SQL QUERY')result = cursor.fetchall()# process result...return 'Done'

解释一下:

  • g 是 Flask 提供的一个每个请求独立的小存储区,它跟线程绑定,安全。

  • get_db() 确保每个请求只打开一次数据库连接

  • @app.teardown_appcontext 这个函数确保请求结束时自动关闭连接

这样就不会有跨线程问题了。


解决方法二:允许 SQLite 跨线程使用连接(不推荐)

还有一种方法是:修改连接参数,允许 SQLite 跨线程用同一个连接:

conn = sqlite3.connect(DATABASE, check_same_thread=False)

check_same_thread=False 表示允许在不同线程里使用同一个连接对象。

但是!!!

  • 这样做存在潜在的并发访问问题(比如两个线程同时读写,容易出错)。

  • SQLite 本身并不是高并发数据库,这样做虽然能避免报错,但隐藏了数据不一致或崩溃的风险

  • 一般只在自己清楚怎么管理线程安全时才敢这么用。

所以 不推荐新手用


小结

方案特点适用场景
每个请求新建连接最安全,Flask推荐正常开发
check_same_thread=False有并发风险,需自己管理线程安全小项目、测试用,不推荐

http://www.dtcms.com/wzjs/546429.html

相关文章:

  • 国外设计网站怎么登陆家用电脑可以做网站服务器
  • 网站排名效果好福建泉州做淘宝的拿货什么网站
  • 建站论坛系统免费发布信息的软件
  • 洛阳建设信息网站校园类网站模板
  • 极速网站建设哪家好网址导航大全软件下载
  • 德兴市网站建设服务公司软文推广300字
  • 卧室室内装修设计网站wordpress调用当前子分类
  • 网站建设作为wordpress增加logo
  • 台州网站建设方案服务辽宁建设厅规划设计网站
  • 深圳哪里有做网站推广的wordpress 图集插件
  • 学校 网站建设 招标贵阳网站维护培训
  • 电子商务网站安全性能主要包括搭建什么平台如何表达
  • 做旅游景区网站免费php模板网站
  • 经济研究院网站建设方案网站建设jz518
  • 青岛网站排名外包做设计那些网站可以卖设计
  • 天津高端模板建站南谯区住房和城乡建设局网站
  • 怎么做网站流量wordpress 文章分页插件
  • 郑州网站建设公司前景怎么在网站做外部链接
  • 预约网站怎么做桂林旅游必去十大景点
  • 上传网站程序是什么营销型网站建设市场分析
  • 沈阳企业网站开发网站建设如何快速增加用户
  • ssh jsp做网站可以做链接的网站
  • 南京 推广 网站建设沈阳第一建筑公司
  • 电力建设期刊 网站无法访问微信朋友圈推广平台收费标准
  • 苏州吴中区做网站价格河南国基建设集团--官方网站
  • 惠阳惠州网站建设百度搜索什么关键词排名
  • 网站开发常用模板自助建站系统模板
  • 网站建设预算申请表网站vps
  • 网站建设管理中se是什么意思马鞍山网站建设电话
  • 文登区城乡建设局网站四平市建设局网站