python - SQLITE 数据库表差异

标签 python sqlite

我在 SQLITE 数据库中有两个表(表 1 和表 2)。我需要确定表1中的哪些项目不在表2中,然后打印结果。我想我可能有一个工作原型(prototype),但对 SQL 不太熟悉。

import sqlite3

sqlite_file = 'data.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()


c.execute("SELECT PK FROM Table1 WHERE NOT EXISTS(SELECT 1 FROM Table2 WHERE PK = Table1.pk)")
results = list(c)
count = len(results)


print(results)
print(count)
  • 有人可以确认这看起来正确吗?
  • 有更好的方法吗?如果没有,任何帮助将不胜感激

最佳答案

我想你已经快到了

import sqlite3

sqlite_file = 'data.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()

#using a NOT IN is better than the NOT EXISTS
#it gets straight to what you are looking for

c.execute("SELECT col1 FROM Table1 WHERE col1 NOT IN (SELECT col1 FROM Table2)")
results = list(c)
count = len(results)

print(results)
print(count)

正如他们在answer中所说的那样, EXISTS 将告诉您查询是否返回任何结果,因为 IN 用于将一个值与多个值进行比较,并且可以使用文字值。

关于python - SQLITE 数据库表差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815435/

相关文章:

Python 创建一个 X 元素的列表,其中元素按 Y 计数。例如,如果 X = 4 且 Y = 5,您将收到 [5, 10, 15, 20]

sqlite3 .import 无法创建表

ios - 如何在 SQLite 中使用 for 循环插入 strftime

php - 不同Web应用程序共享的Sqlite 2和MySQL数据库

python - 如何在将数据编码为 JSON 之前将数据从 SQLite 数据库中读取到字典中?

python - 选择 pandas 列 'a' 、 'b' 和 'e' 到 'g'

python - 属性错误: '…' object has no attribute '_set'

python - '~' 在 python 中是什么意思?

python - 额外线程的装饰器

c - sqlite3 C 用户定义的函数未被调用