ターミナルで実験した後、自分の変数が何であるかを知る方法が実際にはないことが明らかになりました。そのmain.py
ため、ターミナルからアプリの主要部分を次のようにロードしました。
>>> import os
>>> from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
>>> from flask.ext.sqlalchemy import SQLAlchemy
>>> # create the application
>>> app = Flask(__name__)
>>> app.config.from_object(__name__)
>>> app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'some-url.com')
>>> db = SQLAlchemy(app)
そしてそれ以来、私はdb
意図したとおりにオブジェクトにアクセスすることができました。
編集-問題は以下で完全に解決されました。
したがって、アプリのコードをPythonシェルにインポートしようとしたときにエラーが発生した理由は、次の2つです。
- インポートのターゲットである*.pyはルートディレクトリにありませんでした。シェルに間違った場所を探すように指示していました。
- インポートした*.pyはapp.pyという名前ではなかったので(そして私が求めていたので)、間違ったファイル
from app import db
を探すようにシェルに指示していました。
この問題を解決する方法は、*。pyファイルのパスをsys.pathに追加し、代わりにfrom app import db
usを追加することでしたfrom my_filename_without_the_extenssion import db
。要約すると、シェルは次の指示を受け取りました。
>>> import sys
>>> sys.path.append('path/to/my/file')
>>> from my_filename_without_the_extenssion import db
>>> # to test if everythings ok
>>> db