烧瓶peewee不在web服务器上工作

时间:2014-02-12 08:55:23

标签: python database sqlite flask peewee

我无法从编写数据的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)

newsalmost看起来像这样:

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()获取了很多故事

WEIRDER的事情是,我最初以一种更理想的方式构建了这个,其中烧瓶应用程序仅创建一个新闻实例的新实例,然后调用其上的函数从数据库返回东西,这就有用了.IN DEV MODE 。但是,当我将它部署到我的网络派系服务器(并使所有内容都运行起来)时,我再次受到了来自数据库的空响应的欢迎。这是我尝试直接引用烧瓶中的数据库的尝试,认为这可能是最新闻的事情......但是没有。

我很困惑为什么sqllite数据库在本地完全按照预期执行,但没有一次部署到网络服务器,但也...为什么我提供的烧瓶代码没有从数据库中获取任何东西,但运行相同交互式shell中的数据库查询工作?

任何想法?

1 个答案:

答案 0 :(得分:1)

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

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