我如何才能解决 ec2 上 Python Flask 应用程序的问题,但数据库中 table 的数据不会显示?
How can I fix an issue on a Python Flask app on ec2 only where data from a table in database won't display?
在我的应用程序的仪表板页面上,由于某种原因,无法从数据库中的“汽车”table 获取任何数据。我能够将这个问题缩小到仅存在于 ec2 上应用程序的仪表板页面上。如果我 运行 在本地服务器上运行正常。如果我尝试前往 /show/ 路线,它会检索有关特定车辆罚款的信息。
@classmethod
def getAllCars(cls):
query = "SELECT * FROM cars AS c LEFT JOIN users AS u ON u.id = c.users_id;"
results = connectToMySQL(cls.db).query_db(query)
all_cars = []
if not results:
return all_cars
for car in results:
new_car = cls(car)
userData = {
'id': car['users_id'],
'first_name': car['first_name'],
'last_name': car['last_name'],
'email': car['email'],
'password': car['password'],
'created_at': car['u.created_at'],
'updated_at': car['u.updated_at']
}
userD = user.User(userData)
print(userD)
new_car.user = userD
all_cars.append(new_car)
return all_cars
@app.route("/dashboard")
def dashboard():
if "user_id" not in session:
return redirect("/")
data = {
"id": session["user_id"]
}
return render_template("dashboard.html", user = User.getSingleUser(data), all_cars = Car.getAllCars())
<table class="table table-dark tabled-striped w-75">
<thead class="border-bottom">
<th class="w-25">Model</th>
<th class="w-25">Year</th>
<th class="w-25">Seller</th>
<th class="w-25">Actions</th>
</thead>
<tbody>
{% for car in all_cars %}
<tr>
<td class="w-25">{{car.model}}</td>
<td class="w-25">{{car.year}}</td>
<td class="w-25">{{car.user.first_name}} {{car.user.last_name}}</td>
<td class="w-25">
<a href="/show/{{car.id}}" class="btn btn-success">View</a>
{% if session["user_id"] == car.users_id %}
<a href="/edit/{{car.id}}" class="btn btn-primary">Edit</a>
<a href="/delete/{{car.id}}" class="btn btn-danger">Delete</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
我在本地获得的内容与 ec2 的屏幕截图。
如果可能,我会 运行 Flask 应用程序处于调试模式以显示错误。
另外,我会调试 connectToMySQL
和 query_db
方法。他们是否返回正确的东西?如果您的查询实际上 returns 虚假以指示错误,那么您的视图将只显示一个空的汽车列表(因为这是代码默认的,通过 all_cars = []
)。
在我的应用程序的仪表板页面上,由于某种原因,无法从数据库中的“汽车”table 获取任何数据。我能够将这个问题缩小到仅存在于 ec2 上应用程序的仪表板页面上。如果我 运行 在本地服务器上运行正常。如果我尝试前往 /show/
@classmethod
def getAllCars(cls):
query = "SELECT * FROM cars AS c LEFT JOIN users AS u ON u.id = c.users_id;"
results = connectToMySQL(cls.db).query_db(query)
all_cars = []
if not results:
return all_cars
for car in results:
new_car = cls(car)
userData = {
'id': car['users_id'],
'first_name': car['first_name'],
'last_name': car['last_name'],
'email': car['email'],
'password': car['password'],
'created_at': car['u.created_at'],
'updated_at': car['u.updated_at']
}
userD = user.User(userData)
print(userD)
new_car.user = userD
all_cars.append(new_car)
return all_cars
@app.route("/dashboard")
def dashboard():
if "user_id" not in session:
return redirect("/")
data = {
"id": session["user_id"]
}
return render_template("dashboard.html", user = User.getSingleUser(data), all_cars = Car.getAllCars())
<table class="table table-dark tabled-striped w-75">
<thead class="border-bottom">
<th class="w-25">Model</th>
<th class="w-25">Year</th>
<th class="w-25">Seller</th>
<th class="w-25">Actions</th>
</thead>
<tbody>
{% for car in all_cars %}
<tr>
<td class="w-25">{{car.model}}</td>
<td class="w-25">{{car.year}}</td>
<td class="w-25">{{car.user.first_name}} {{car.user.last_name}}</td>
<td class="w-25">
<a href="/show/{{car.id}}" class="btn btn-success">View</a>
{% if session["user_id"] == car.users_id %}
<a href="/edit/{{car.id}}" class="btn btn-primary">Edit</a>
<a href="/delete/{{car.id}}" class="btn btn-danger">Delete</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
我在本地获得的内容与 ec2 的屏幕截图。
如果可能,我会 运行 Flask 应用程序处于调试模式以显示错误。
另外,我会调试 connectToMySQL
和 query_db
方法。他们是否返回正确的东西?如果您的查询实际上 returns 虚假以指示错误,那么您的视图将只显示一个空的汽车列表(因为这是代码默认的,通过 all_cars = []
)。