我已经用Python编写了这段代码,我基本上打开了我的SQLite3数据库并查看表“联系人”中的每一行,然后获取每个“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()
Run Code Online (Sandbox Code Playgroud)
任何建议,我对 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)
Run Code Online (Sandbox Code Playgroud)
告诉INNER JOINSQLite 仅选择列上存在实际匹配的行id。如果您将该id列标记为表中的外键contact,则也可以使用 aNATURAL INNER JOIN并省略该ON子句。
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |