[英]Merging two SQLite tables from the same database with python and sqlite3
[英]Python & SQLite3 Selecting from two tables
我已经用python编写了这段代码,基本上我打开了SQLite3数据库,查看了表“ contact”中的每一行,然后获取了每个“ id”号,然后查看了“ Users”表中的匹配“ 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
列上实际匹配的行。 如果在contact
表中将id
列标记为外键,则也可以使用NATURAL INNER JOIN
,并省略ON
子句。
如果我了解您:
cursor.execute("SELECT Users.name, contact.address FROM Users, contact WHERE contact.Id = Users.id;")
for row in cursor:
name= row[0]
address= row[1]
text_file.write(name+" "+address)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.