2014-02-12 61 views
1

我無法從python腳本訪問peewee數據庫,而不是寫數據(但奇怪的是在交互式shell中)。我正在用python,flask和peewee開發數據挖掘應用程序。我將在這裏將它縮減爲一個字節大小的問題,但它的範圍比im提供的要大。所有的python文件都位於同一個文件夾中燒瓶peewee無法在web服務器上工作

基本過程是一個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) 

「蟒蛇webapp.py」

我試圖去掉它的核心問題。由於我實際上可以在該文件夾中運行「python」,導入數據庫,並且我從Stories.select()中獲得了很多故事,所以我知道它正確記錄它們,

WEIRDER的事情是,我最初設計了一個更好的方式,燒瓶應用程序只創建一個newsalmost實例的新實例,然後調用函數來從數據庫返回東西,這工作.. IN DEV模式。但是當我將它部署到我的web派系服務器(並且讓所有的東西都在那裏運行)時,我再次迎接來自數據庫的空響應。這是我試圖直接參考燒瓶中的數據庫,認爲它可能是新聞報道的東西......但不是。

我只是困惑爲什麼一個sqllite數據庫將完全按照預期在本地執行,但沒有一次部署到Web服務器,但也......爲什麼我提供的瓶子代碼沒有從數據庫中得到任何東西,但運行交互式shell工作中的相同數據庫查詢?

有什麼想法?

+0

嘆息..我想它是絕望的...回到MongoDB – mradfo21

回答

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 
+1

我確實最終解決了這個問題......我只是在生產中使用了燒瓶測試模式。它明確表示永遠不會做,但我已經有0個問題,所以...嘿...也繼承人我在做什麼:https://vimeo.com/113218591 – mradfo21

+0

這是一個有趣的概念,只是測試它:) – bfontaine

相關問題