我的查询仅适用于部分数据库

问题描述 投票:0回答:1

当我运行代码时,仅提取并应用数据库中的某些查询,因此应用的某些代码不正确。我无法判断是我的 HTML 代码不正确还是我的查询不正确,或者数据库中是否存在整体错误。

我检查了我的数据库,看看数据库中任何项目的id是否有错误,但它们都是正确的,我检查了我的代码但没有用。

@app.route('/activity/<activityid>')
def activity(activityid): 
    dbObject = Database(DB_FILE)
    visit = {
        "VisitType" : "Activity",
        "LinkId" : activityid ,
        "VisitTime" : datetime.datetime.now(),
        "UserId" : session['user']['user_info'][0] if 'user' in session and session['user']['logged_in'] else "", # ternary operation
        "IpAddress" : socket.gethostbyname(socket.gethostname())
    }
    dbObject.addVisit(visit)

    conn = dbObject.connection
    data = {}
    data['config'] = config

    activityObject = Activity(conn)
    hotelObject = Hotel(conn)
    transportObject = Transport(conn)


    if activityid:
        data['activity'] = activityObject.getActivity(activityid)
        data['suggestions'] = activityObject.getActivitySuggestions(activityid)
        data['hotel'] = hotelObject.getHotelSuggestions(activityid)
        data['transport'] = transportObject.getTransportSuggestions(activityid)

        return render_template ("activity.html", data=data)
    def getActivitySuggestions(self, activityid):
        cursor = self.conn.cursor()
        query = f"""SELECT Activity.*, Location.Name as LocationName 
                FROM Activity JOIN Location 
                ON Activity.LocationId = Location.LocationId 
                where Activity.LocationId = (select LocationId from Activity where ActivityId = {activityid})
                and Activity.ActivityId != {activityid} ORDER by random()"""
        #print(query)
        try:
            cursor.execute(query)
            records = cursor.fetchall()
            if records:
                return records
            else:
                return False
        except:
            return "Something Went Wrong!"
{% if data["activities"] %}
  <div class="row">
      <div class="col-md-12">
          <h1>Suggested Activities</h1>
      </div>
  </div>
  <div class="row">
    {% for eachActivity in data["activities"] %} <!--for loop created for all of the activity that are created-->
    <div class="col-md-6">
        <div class="card mb-3"> <!-- gridding the cards sizing -->
            <div class="row g-0">
                <div class="col-md-4">
                    <img src="/static/activities/{{ eachActivity[0] }}_0.jpg" class="img-fluid rounded-start" alt="..."> <!--images upload from actvity files in static-->
                </div>
                <div class="col-md-8">
                    <div class="card-body">
                        <h5 class="card-title"><a href="/activity/{{ eachActivity[0] }}">{{ eachActivity[1] }}</a> </h5> <!-- import the address name and price from the database-->
                        <p class="card-text">{{ eachActivity[5] }}</p>
                        <p class="card-text"><strong class="text-body-secondary">{{ eachActivity[3] }}</strong></p>
                        <p class="card-text"><small class="text-body-secondary">{{ eachActivity[6] }}</small></p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    {% endfor %}
  </div>
  {% endif %}
python html sql sqlite
1个回答
0
投票

getActivitySuggestions
中,您需要对
activityid
进行一些更改。在类中,如果你有参数,你应该定义
self.{parameter_name} = {parameter}
:你可以用它来测试它吗?

def getActivitySuggestions(self, activityid):
    self.activityid = activityid
    cursor = self.conn.cursor()
    query = f"""SELECT Activity.*, Location.Name as LocationName 
            FROM Activity JOIN Location 
            ON Activity.LocationId = Location.LocationId 
            where Activity.LocationId = (select LocationId from Activity where ActivityId = {self.activityid})
            and Activity.ActivityId != {self.activityid} ORDER by random()"""
    #print(query)
    try:
        cursor.execute(query)
        records = cursor.fetchall()
        if records:
            return records
        else:
            return False
    except:
        return "Something Went Wrong!"
© www.soinside.com 2019 - 2024. All rights reserved.