簡體   English   中英

Python sqlite3選擇不行等於列表的每個元素的位置

[英]Python sqlite3 select where not row equals each element of list

我在python中有一個列表:

usernames = ["username 1", "Username 2", ... "Username 3"]

我必須執行sql查詢,以從表中選擇所有行,其中用戶名不等於列表中的任何元素。

results = cursor.execute("SELECT * FROM table WHERE NOT username = ?", usernames)

我該如何實現?

您可以使用NOT IN條件。 不幸的是,不能用值列表替換占位符,因此,必須為usernames列表中的每個元素創建一個占位符:

In [24]: c.execute('SELECT * FROM test').fetchall()
Out[24]: [('name1',), ('name2',), ('name3',)]

In [25]: usernames = ['name2', 'name4', 'name5']

In [26]: sql = 'SELECT * FROM test WHERE name NOT IN ({})'.format(','.join('?' * len(usernames)))

In [27]: c.execute(sql, usernames).fetchall()
Out[27]: [('name1',), ('name3',)]

In [28]: usernames += ['name1']

In [29]: sql = 'SELECT * FROM test WHERE name NOT IN ({})'.format(','.join('?' * len(usernames)))

In [30]: c.execute(sql, usernames).fetchall()
Out[30]: [('name3',)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM