如何在Python中将sqlite3数据导入prettytable打印

0 投票
1 回答
1535 浏览
提问于 2025-04-16 22:26

我刚开始学Python,现在需要帮助,想从sqlite3获取一些输出。

(u'GABRIELLA TEGGIA (40)', u'-', u'65')
(u'PUTRA', u'DPS', u'11')
(u'SUASTINI', u'-', u'-')
(u'ARI UTAMA', u'JL.D.BERATAN GG.8/4', u'26')
(u'SUYASA', u'DS.TUNJUK,TABANAN', u'33')
(u'SARAH(41)', u'BEJI AYU', u'40')
(u'AA.GDE OKA', u'JL.H.WURUK 179 DPS', u'53')
(u'AYU NILA RADIASTUTI', u'ABIAN BASE,KAPAL', u'8')
(u'DANTI I NYOMAN', u'GIANYAR', u'50')
(u'INDAYANI', u'BUNUTIN,UBUD', u'6')
(u'JENNI', u'JL.MUTIARA NO.18 KEROBOKAN', u'37')
(u'JERRY G.J ABELL', u'HOLLAND', u'-')
(u'COK ALIT', u'BR.MUKTI,SINGAPADU', u'35')
(u'SUPARTI NI PUTU', u'KARANGASEM', u'51')
(u'SUMADA I GD', u'SINGARAJA', u'60')

但是我只能获取到最后一行数据,像这样。

+-------------+-----------+------+
|    Pasien   |   Alamat  | Umur |
+-------------+-----------+------+
| SUMADA I GD | SINGARAJA |  60  |
+-------------+-----------+------+

我该怎么才能打印出所有的行呢?我在这里提供我的代码:

import sqlite3
connection = sqlite3.connect('data.db3')
cursor=connection.cursor()
print("Show data row by row:")
print('-'*40)

from prettytable import PrettyTable
x = PrettyTable()
x.set_field_names(["Pasien", "Alamat", "Umur"])

cursor.execute('SELECT nm_pasien, almt_pasien, umur_pasien from pasien limit 15')


for nm_pasien in cursor:
    print nm_pasien

print('-'*40)

x.add_row(nm_pasien)
x.printt()

我使用的是Python 2.5和来自这里的prettytable模块。

我卡住了,请帮帮我。谢谢!

1 个回答

1

x.add_row 的调用放到循环里面:

for nm_pasien in cursor:        
    x.add_row(nm_pasien)
    # print nm_pasien

在你原来的代码中,x.add_row(nm_pasien) 放在循环外面,这样 add_row 只会被调用一次。而且,nm_pasien 只会保留循环结束时的最后一个值。这就是为什么你在 PrettyTable 中只看到最后一行数据的原因。

撰写回答