我注意到,当print(msg)
在for
循环中没有缩进,并且缩进在与for循环相同的位置时,它只打印我所做的更新语句中的信息,但当它处于下面时,它应该如何向我提供我所请求的信息。
这是我的代码:
import sqlite3
conn = sqlite3.connect(':memory:')
with conn:
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS tbl_roster(
col_name TEXT,
col_species TEXT,
col_iq TEXT
)")
conn.commit()
with conn:
cur = conn.cursor()
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Jean-Baptiste Zorg', 'Human', '122'))
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Korben Dallas', 'Meat Popsicle', '100'))
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ("Ak'not", 'Mangalore', '-5'))
conn.commit()
with conn:
cur = conn.cursor()
cur.execute("UPDATE tbl_roster SET col_species=? WHERE col_name=? AND col_iq=?",('Human', 'Korben Dallas', '100'))
conn.commit()
with conn:
cur = conn.cursor()
cur.execute("SELECT col_name, col_iq FROM tbl_roster WHERE col_species = 'Human'")
varSpecies = cur.fetchall()
for item in varSpecies:
msg = "Name: {} nIQ: {} ".format(item[0], item[1])
print(msg)
Python使用缩进来定义块。如果在for
循环下缩进print
行,则在每次迭代时都会调用它。如果不这样做,循环将在每次迭代中迭代并覆盖msg
,然后当它完成时,print
语句将打印最后一个值。