flask peewee无法在web服务器上工作



im无法从除写入数据的python脚本之外的其他python脚本访问peewee数据库(但奇怪的是,在交互式shell中)。我正在用python、flask和peewee开发一个数据挖掘应用程序。我将把它分解成一个字节大小的问题,但它的范围比我所说的要大。所有python文件都位于同一文件夹中

基本过程是一个python命令行操作,它从《纽约时报》和instagram中获取一些信息,并将它们存储到Peewee(sqllite)数据库中。然后,我使用烧瓶应用程序来探索数据。

这是数据库.py中的一个模型:

from peewee import *
class Story(Model):
title = CharField()
story = TextField()
date = DateField()
class Meta:
database = SqliteDatabase("newsalmost.db",threadlocals = True)

新闻几乎是这样的:

from database import *
class NewsAlmost(object):
def __init__(self):
self.db = SqliteDatabase("newsalmost.db",threadlocals = True)

如果是这样的东西:

story = Story.create(title = self.feed.stories[key]["title"], story = self.feed.stories[key],date = datetime.datetime.now(), is_relative = True)

然后我可以运行:

"python newslamost.py -g" 

它会收集数据并将其写入数据库

然后我有一个名为webapp.py的文件,它是一个烧瓶应用

import newsalmost
from flask import Flask
from flask import send_file
import subprocess
app = Flask(__name__)
import os
import json
from database import *
@app.route("/")
def index():
r = []
for i in Image.select():
r.append(str(i))
return json.dumps(r)

"python-webapp.py">

我试着把它归结为核心问题。flask应用程序从未在数据库中看到任何内容。。曾经

我知道它正确地记录了它们,因为我实际上可以在那个文件夹中运行"python",导入数据库,我从stories.select()中得到很多故事

奇怪的是,我最初以一种更理想的方式构建了它,即flask应用程序只创建newsnear实例的一个新实例,然后调用该实例上的函数从数据库返回内容,这就成功了。。在开发模式下。但当我把它部署到我的网络派系服务器上(并让那里的一切都运行起来)时,我再次收到来自数据库的空响应。这是我试图直接引用flask中的数据库,认为这可能是新闻,几乎把事情搞砸了。。但是没有。

我只是很困惑,为什么sqllite数据库在本地会完全按照预期运行,但一旦部署到Web服务器上,还会。。。为什么我提供的flask代码没有从数据库中获得任何信息,而是在交互式shell中运行相同的数据库查询?

有什么想法吗?

我不知道这是否能解决你的问题,但你应该在两个模块中使用相同的数据库对象:

database.py:

from peewee import *
db = SqliteDatabase("newsalmost.db",threadlocals = True)
class Story(Model):
title = CharField()
story = TextField()
date = DateField()
class Meta:
database = db

newsalmost.py:

from database import *
class NewsAlmost(object):
def __init__(self):
self.db = db

最新更新