如何解决漂亮表格中重复显示数据的问题Python
How to solve problem with repetitive displaying datas in pretty Tables Python
我在 python 控制台中使用 SQLite3 创建了数据库。在主菜单中,我有选项“显示所有数据”。我在 python 中使用了漂亮的 table。但问题是当我不退出程序时,我选择了 3 次相同的选项“显示所有数据”,每次我选择此选项时它都会添加所有行。假设我在数据库中有 4 行,每次我选择“显示所有数据”时,它 displays/adds 接下来的 4 行到 table.The 下面的代码
import sqlite3 as sql
from prettytable import PrettyTable
x = PrettyTable()
def display_all_data():
conn = sql.connect("register.db")
cur = conn.cursor()
cur.execute("SELECT firstname,lastname,date_of_birth,id_number FROM datas ORDER BY lastname")
rec = cur.fetchall()
x.field_names = ["Firstname", "Lastname", "Date of Birth", "ID number"]
for item in rec:
print([x.add_row([rec[1],rec[2],rec[3],rec[4]]))
#outside the for-loop
print(x)
conn.commit()
conn.close()
每次我选择函数 display_all_datas 它都会添加相同的 4 行但是每次当我选择这个选项时我想显示一次行。
变化:
for item in rec:
print([x.add_row([rec[1],rec[2],rec[3],rec[4]])
至:
for item in rec:
print([x.add_row(item)])
但是,如果您希望每次调用 display_all_data
时只添加一行,那么您需要重新格式化一些代码。您需要创建 conn
并在函数外部执行查询,然后在函数中使用 cur.fetchone()
。
import sqlite3 as sql
from prettytable import PrettyTable
x = PrettyTable()
conn = sql.connect("register.db")
cur = conn.cursor()
cur.execute("SELECT firstname,lastname,date_of_birth,id_number FROM datas ORDER BY lastname")
x.field_names = ["Firstname", "Lastname", "Date of Birth", "ID number"]
def display_one_line_of_data():
rec = cur.fetchone()
print([x.add_row(rec))
#outside the for-loop
print(x)
我在 python 控制台中使用 SQLite3 创建了数据库。在主菜单中,我有选项“显示所有数据”。我在 python 中使用了漂亮的 table。但问题是当我不退出程序时,我选择了 3 次相同的选项“显示所有数据”,每次我选择此选项时它都会添加所有行。假设我在数据库中有 4 行,每次我选择“显示所有数据”时,它 displays/adds 接下来的 4 行到 table.The 下面的代码
import sqlite3 as sql
from prettytable import PrettyTable
x = PrettyTable()
def display_all_data():
conn = sql.connect("register.db")
cur = conn.cursor()
cur.execute("SELECT firstname,lastname,date_of_birth,id_number FROM datas ORDER BY lastname")
rec = cur.fetchall()
x.field_names = ["Firstname", "Lastname", "Date of Birth", "ID number"]
for item in rec:
print([x.add_row([rec[1],rec[2],rec[3],rec[4]]))
#outside the for-loop
print(x)
conn.commit()
conn.close()
每次我选择函数 display_all_datas 它都会添加相同的 4 行但是每次当我选择这个选项时我想显示一次行。
变化:
for item in rec:
print([x.add_row([rec[1],rec[2],rec[3],rec[4]])
至:
for item in rec:
print([x.add_row(item)])
但是,如果您希望每次调用 display_all_data
时只添加一行,那么您需要重新格式化一些代码。您需要创建 conn
并在函数外部执行查询,然后在函数中使用 cur.fetchone()
。
import sqlite3 as sql
from prettytable import PrettyTable
x = PrettyTable()
conn = sql.connect("register.db")
cur = conn.cursor()
cur.execute("SELECT firstname,lastname,date_of_birth,id_number FROM datas ORDER BY lastname")
x.field_names = ["Firstname", "Lastname", "Date of Birth", "ID number"]
def display_one_line_of_data():
rec = cur.fetchone()
print([x.add_row(rec))
#outside the for-loop
print(x)