я не могу получить доступ к базе данных peewee из скрипта Python, кроме того, который записывает данные (но странно в интерактивной оболочке). Я разрабатываю приложение для интеллектуального анализа данных с помощью python, flask и peewee. Я собираюсь сократить это до проблемы размера байта здесь, но это больше по объему, чем то, что я представляю. все файлы python находятся в одной папке
базовый процесс представляет собой операцию командной строки Python, которая получает некоторую информацию из New York Times и 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.py"
Я попытался свести это к основной проблеме. Приложение фляги никогда ничего не видит в базе данных... никогда...
я ЗНАЮ, что он правильно их регистрирует, потому что я действительно могу запустить «python» в этой папке, импортировать базу данных и получить много историй из Stories.select()
WEIRDER дело в том, что я изначально спроектировал это более желательным образом, когда приложение фляги просто создает новый экземпляр самого близкого к новости экземпляра, а затем вызывает функции для этого, чтобы вернуть материал из базы данных, и это сработало. В РЕЖИМЕ РАЗРАБОТКИ. Но когда я развернул его на своем сервере веб-фракции (и все там заработало), меня снова всегда встречает пустой ответ из базы данных. это моя попытка попытаться напрямую сослаться на базу данных в flask, думая, что, возможно, это была новость, которая почти все испортила ... но нет.
Я просто сбит с толку, почему база данных sqllite будет работать точно так, как ожидалось, локально, но не после развертывания на веб-сервере, а также... почему предоставленный мной фляжный код ничего не получает из базы данных, но выполняет тот же запрос к базе данных в интерактивная оболочка работает?
Любые идеи?