我正在研究flask应用程序,该应用程序将使用数据库并通过html渲染图表。发生一些错误,它找不到db / pets.sqlite来访问数据库并运行该应用程序。
这是返回的错误:
回溯(最近通话最近): 在第22行的文件“ app.py”中 从.models导入宠物 ModuleNotFoundError:没有名为“ 主要 .models”的模块; “ 主要”不是软件包
我需要克服这个问题,以便开发一个heroku应用程序。我搜索了其他线程,但没有真正有意义的搜索。 ... s目标是在应用py中提取数据库并导入数据库以使用127.0.0.1.5000 url启动应用。
如果我删除“。”从app.py和models.py导入数据库时崩溃...
为什么它会与“。”一起使用---文件是否在同一目录中?
测试3从MODELS.PY删除周期:“从.app import db”中没有句点: 在第20行的文件“ app.py”中 从模型导入Pet 在第1行的文件“ Pet_Pals_Refactor \ solved \ pet_pals \ models.py”中 从应用程序导入数据库 文件“ Pet_Pals_Refactor \ solved \ pet_pals \ app.py”,第20行,在 从模型进口宠物 ImportError:无法从“模型”中导入名称“宠物”
目录结构:
|_______[pet_pals]______
| |
| |__________[db]__________
| | |
| | |_pets.sqlite
| |
| |_______[static]_________
| | |
| | |______[css]____
| | | |
| | | |_style.css
| | |
| | |______[js]_____
| | |
| | |_app.js
| |
| |
| |_______[templates]______
| |
| |_______form.html
| |
| |_______index.html
|
|
|______initdb.py
|______requirements.txt
|______run.sh
from pet_pals.app import db
# db.drop_all()
db.create_all()
------ FROM app.py --------
import os
from flask import (
Flask,
render_template,
jsonify,
request,
redirect)
app = Flask(__name__)
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', '') or
"sqlite:///db/pets.sqlite"
# app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', '')
from models import Pet
# create route that renders index.html template
@app.route("/")
def home():
return render_template("index.html")
# Query the database and send the jsonified results
@app.route("/send", methods=["GET", "POST"])
def send():
if request.method == "POST":
name = request.form["petName"]
lat = request.form["petLat"]
lon = request.form["petLon"]
pet = Pet(name=name, lat=lat, lon=lon)
db.session.add(pet)
db.session.commit()
return redirect("/", code=302)
return render_template("form.html")
@app.route("/api/pals")
def pals():
results = db.session.query(Pet.name, Pet.lat, Pet.lon).all()
hover_text = [result[0] for result in results]
lat = [result[1] for result in results]
lon = [result[2] for result in results]
pet_data = [{
"type": "scattergeo",
"locationmode": "USA-states",
"lat": lat,
"lon": lon,
"text": hover_text,
"hoverinfo": "text",
"marker": {
"size": 50,
"line": {
"color": "rgb(8,8,8)",
"width": 1
},
}
}]
return jsonify(pet_data)
if __name__ == "__main__":
app.run()
--------- initdb.py -------
from pet_pals.app import db
# db.drop_all()