Python & SQLite3 从两个表中选择

标签 python sql sqlite

我用 python 编写了这段代码,我基本上打开了我的 SQLite3 数据库并查看表“contact”中的每一行,然后获取每个“id”编号,然后查看表中匹配的“id” “用户”。我的问题是它只输出第一行,并没有遍历所有行。

import sqlite3

conn = sqlite3.connect('sqlite3.db')

cursor = conn.cursor()
cursor2 = conn.cursor()
cursor3 = conn.cursor()

text_file = open("Output.txt", "w");
try:
    cursor.execute("SELECT Id, address FROM contact;") # Get address details by ID
    for row in cursor:
        ID = row[0]
        address= row[1]

        cursor2.execute("SELECT name FROM Users WHERE id= " + str(ID) + ";") # Get users's name by ID
        row2 = cursor2.fetchone()
        sendername = row2[0]

        text_file.write(firstname, lastname, address);


finally:
    conn.close()

任何建议,我是 python 的新手。

最佳答案

您可以要求数据库改为执行连接:

cursor.execute("""\
    SELECT u.name, c.address
    FROM contact c
    INNER JOIN Users u ON u.id = c.Id
    """)
with open('Output.txt', 'w') as outfh:
    for name, address in cursor:
        outfh.write('{} {}\n'.format(name, address)

INNER JOIN 告诉 SQLite 只选择在 id 列上有实际匹配的行。如果您将 id 列标记为 contact 表中的外键,您也可以使用 NATURAL INNER JOIN,并省略 ON 子句。

关于Python & SQLite3 从两个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383620/

相关文章:

python - 如何访问 ATNewsItem 对象的 'imageCaption' 字段的值?

python - 有没有一种有效的方法来获取 pyshark 中的字段偏移量

sql - 在没有循环和游标的临时表中插入日期范围

sql - 动态跳过 Where 子句

python - 如何使用python向eventhub发送多条消息

python - 有没有一种简单的方法可以在 python 中自定义 try- except 错误代码输出?

php - 无效查询 - 更新 MySQL 数据库时出现问题

Sqlite 扑克牌 table

php - 什么方法适合加密 SQLite 数据库,以便在 PHP 服务器上使用?

Perl 和 Sqlite