除了编写数据的脚本之外,我无法从 python 脚本访问 peewee 数据库(但在交互式 shell 中很奇怪)。我正在用 python、flask 和 peewee 开发一个数据挖掘应用程序。我将在这里将其分解为一个字节大小的问题,但它的范围比我所呈现的要大。所有 python 文件都位于同一个文件夹中
基本过程是一个python命令行操作,它会从纽约时报和instagram中获取一些信息并将它们存储到Peewee(sqllite)数据库中。然后我使用烧瓶应用程序来探索数据。
继承自 database.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”
我试图将其分解为核心问题。烧瓶应用程序永远不会在数据库中看到任何东西......永远......
我知道它正确地记录了它们,因为我实际上可以在那个文件夹中运行“python”,导入数据库,我从 Stories.select() 中得到了很多故事
更奇怪的是,我最初以一种更理想的方式构建了它,其中烧瓶应用程序仅创建一个新实例的新实例,然后调用其上的函数以从数据库返回内容,这很有效。在开发模式下。但是,当我将它部署到我的网络派系服务器(并在那里运行所有东西)时,我再次收到来自数据库的空响应。这是我尝试直接引用烧瓶中的数据库的尝试,认为这可能是新闻几乎他妈的事情......但不。
我只是感到困惑,为什么 sqllite 数据库会在本地完全按预期执行,但一旦部署到网络服务器就不会,而且......为什么我提供的烧瓶代码没有从数据库中获取任何内容,而是运行相同的数据库查询交互式外壳工作?
有任何想法吗?