1

データを書き込むもの以外の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サーバーに一度も展開されないのはなぜでしょうか...なぜ私が提供したフラスココードはデータベースから何も取得しないのに、同じデータベースクエリを実行するのですか?インタラクティブなシェル作業?

何か案は?

4

1 に答える 1