Удаление строки для результатов Python MySQL запроса, но не удаление из базы данных - PullRequest
1 голос
/ 04 октября 2019

Я разрабатываю приложение, в котором необходимо использовать расстояние, рассчитанное между двумя почтовыми индексами, чтобы определить, отображается ли эта строка пользователю или нет. Если расстояние не превышает 100 миль, результат должен остаться в наборе результатов, возвращенном из запроса sql, однако, если он больше 100, я хочу удалить его из набора результатов, но оставить его в таблице sql

def zipcode(offerzip, techzip):
    dist = pgeocode.GeoDistance('us')
    distance = dist.query_postal_code(offerzip, techzip)
    distance = distance/1.609
    return round(distance)

def techOffer()
    cur = mysql.connection.cursor()
    result = cur.execute("SELECT * FROM orders WHERE status='offer'",)
    offerData = cur.fetchall()
    result_2 = cur.execute("SELECT * FROM users WHERE username=%s", [session['username']])
    techData = cur.fetchall()
    techZip = techData['zip']
    for row in offerData:
         offerZip = offerData['zip']
         if zipcode(offerZip, techZip) !< 100:

Вывод на печать (techData):

({'id': 20, 'name': 'Sage Hopkins', 'email': 'Removed', 'username': 'sagefhopkins', 'password': '$5$rounds=535000$KywbJzy7Oo6lNfrJ$iz9BPUcLF.2HUttL8zRZVEIcwJ8/O3RxOkWZH0lsdO1', 'street': 'Removed ', 'city': 'Removed', 'state': 'Removed', 'zip': 97537, 'phone': 'Removed', 'cell': 'Removed', 'permission': None, 'register_date': datetime.datetime(2019, 8, 27, 20, 29, 26)},)

Вывод на печать (offerData):

({'id': 7, 'userid': 20, 'assignedid': 20, 'name': 'Sage Hopkins', 'email': 'Removed', 'phone': 'Removed', 'street': 'Removed', 'city': 'REmoved', 'state': 'Removed', 'country': 'United States', 'zip': '80906', 'issue': 'Very major computer issue, Very major computer issue, Very major computer issue, Very major computer issue, Very major computer issue, ', 'support_Type': 'Home', 'computer': 'Dell T700', 'operating_System': 'Windows', 'status': 'offer', 'timestamp': datetime.datetime(2019, 8, 27, 20, 30, 43)},)

1 Ответ

1 голос
/ 04 октября 2019

Вы можете использовать ключевое слово del для удаления ключей из словарей. В вашем случае вам нужно перебрать результаты, так как это набор словарей :

if zipcode(offerZip, techZip) <= 100:
    for obj in techData:
        del obj['zip']

    for obj in offerData:
        del obj['zip']

Примечание , что это никак не влияет на данные вваша база данных, и только изменяет экземпляры techData и offerData.

Кроме того, я не думаю, что !< является допустимым синтаксисом. Используйте <= для меньше или равно и < для меньше .

...