データを書き込むもの以外のPythonスクリプトからpeeweeデータベースにアクセスできません(ただし、インタラクティブシェルでは奇妙です)。Python、Flask、および peewee を使用してデータ マイニング アプリケーションを開発しています。ここではバイト サイズの問題に切り分けますが、現在提示されているものよりも範囲が広いです。すべてのpythonファイルは同じフォルダーにあります
基本的なプロセスは、ニューヨーク タイムズとインスタグラムから情報を取得して Peewee (sqllite) データベースに保存する Python コマンド ライン操作です。次に、フラスコ アプリケーションを使用してデータを調べます。
database.py のモデルの 1 つを次に示します。
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() から多くのストーリーを取得できるため、ログが正しく記録されていることを知っています。
奇妙なことは、フラスコアプリが単にnewsalmostインスタンスの新しいインスタンスを作成し、その上で関数を呼び出してデータベースからものを返すという、より望ましい方法でこれを最初に設計したことです.. IN DEV MODE. しかし、それを自分の Web 派閥サーバーにデプロイしたとき (そしてそこですべてを実行したとき)、データベースから常に空の応答が返されます。これは、フラスコ内のデータベースを直接参照しようとする私の試みであり、おそらくそれはニュースであり、ほとんどめちゃくちゃなことだと思っています..しかし、いいえ。
sqlliteデータベースがローカルで期待どおりに正確に動作するのに、Webサーバーに一度も展開されないのはなぜでしょうか...なぜ私が提供したフラスココードはデータベースから何も取得しないのに、同じデータベースクエリを実行するのですか?インタラクティブなシェル作業?
何か案は?