删除mysql查询python结果的行但不从数据库中删除
Posted
技术标签:
【中文标题】删除mysql查询python结果的行但不从数据库中删除【英文标题】:Removing row for results of mysql query python but not deleting from database 【发布时间】:2019-10-04 02:13:40 【问题描述】:我正在开发一个应用程序,它需要使用计算出的两个邮政编码之间的距离来确定该行是否显示给用户。如果距离不大于 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),)
【问题讨论】:
您要排除哪一行?distance
看起来不像是数据库列。
距离不在数据库列中,但是订单数据的邮政编码和 techData 是。 zipcode(offerzip, techzip) 用于计算两个邮政编码之间的距离。 techOffer() 函数然后处理活动“优惠”的 SQL 查询并使用 zipcode 函数来计算两个邮政编码之间的距离,如果该距离不大于 100 我想删除数据集中的行
你用什么包连接MySQL?
flask_mysqldb
我应该能给你一个答案,但我不熟悉那个包,它的docs 并没有告诉你结果数据是什么样子的。你能添加一个显示print(techData)
结果的更新吗?
【参考方案1】:
您可以使用del
关键字从字典中删除键。在您的情况下,您需要遍历结果,因为它是一个 字典元组:
if zipcode(offerZip, techZip) <= 100:
for obj in techData:
del obj['zip']
for obj in offerData:
del obj['zip']
注意,这对数据库中的数据没有任何影响,只会更改techData
和offerData
的实例。
另外,我不认为!<
是有效的语法。使用<=
表示小于或等于,使用<
表示小于。
【讨论】:
以上是关于删除mysql查询python结果的行但不从数据库中删除的主要内容,如果未能解决你的问题,请参考以下文章
PHP删除链接从文件夹中取消链接文件但不从MSSQL表中删除行