2014-02-12 2 views
1

им не удается получить доступ к базе данных peewee из скрипта python, отличного от того, который пишет данные (но странно в интерактивной оболочке). Я разрабатываю приложение для интеллектуального анализа данных с помощью python, flask и peewee. Я собираюсь разрезать его на проблему с размером байтов, но он большой по объему, чем то, что он представляет. все файлы python находятся в той же папкеflask peewee не работает на веб-сервере

Основной процесс - это операция командной строки на python, которая выходит и захватывает некоторую информацию из новых york и instagram и сохраняет их в базе данных Peewee (sqllite). Затем я использую приложение фляги для изучения данных.

Heres одна из моделей 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, который представляет собой колбу App

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 РЕЖИМ. Но когда я развернул его на своем сервере веб-фракций (и все там запущен), меня снова приветствует пустой ответ из базы данных. это моя попытка попытаться напрямую ссылаться на базу данных в фляжке, думая, что, возможно, это были самые невероятные вещи ... но нет.

Я просто смущен, почему база данных sqllite будет выполняться точно так, как ожидалось, локально, но не раз развертывается на веб-сервере, но также ... почему код флагов, который я предоставил, не получает ничего из базы данных, но работает тот же запрос базы данных в интерактивной работе оболочки?

любые идеи?

+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

 Смежные вопросы

  • Нет связанных вопросов^_^