繁体   English   中英

Python和SQLite3:查询必须返回2个列表

[英]Python and SQLite3: Query must return 2 lists

我正在使用此查询来验证是否有2个航路点(x [0]和x [2])在给定的路线上:

c.execute("SELECT WPNumber, ROUTE, WPID FROM wpnavrte WHERE ROUTE = ? AND (WPID = ? OR WPID = ?)", (x[1], x[0], x[2]))

如果两个航路点均在路线上,则结果应类似于[('001', 'A123', 'WAYPOINT X'), ('005', 'A123', 'WAYPOINT Y')]

如果航点/路线组合为假,则将返回“无”或一个列表。

检查查询结果是否为重复列表的最有效方法是什么?

c.execute("""SELECT t1.WPNumber, t1.ROUTE, t1.WPID, t2.WPID
    FROM wpnavrte t1
    JOIN wpnavrte t2
    ON t1.ROUTE = t2.ROUTE
    WHERE t1.ROUTE = ? AND t1.WPID = ? AND t2.WPID = ?
    """, (x[1], x[0], x[2]))

如果两个航路点在同一条路线上,则c.fetchone()将返回一个四元组,其值分别代表WPNumber,Route,第一个和第二个WPID。

如果两个航点不在同一条路线上,则c.fetchone()将返回None

也许最简单的方法是稍微修改您的SQL查询(应用LIMIT 3减轻查询质量,然后检查您只有2个):

results = list(c.execute("SELECT WPNumber, ROUTE, WPID FROM wpnavrte WHERE ROUTE = ? AND (WPID = ? OR WPID = ?) LIMIT 3", (x[1], x[0], x[2])))
if len(results) != 2:
    # do something

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM