2

プログラムで sqlite3 テーブルから選択し、ヘッダーなしで結果セットを取得する方法があるかどうか疑問に思っていました。を呼び出すことで問題を解決するいくつかの関連する質問hereおよびhere.headers OFFを見つけましたが、このオプションはコマンドライン sqlite クライアントにのみ適用されるようです。参考までに、私の python クエリ コードを次に示します (一部の例外処理を除きます)。

con = lite.connect('my_db.sqlite')
sql = 'SELECT * FROM some_table'
cur = execute(sql, con)
rows = cur.fetchall()

rowsthenの値は

[
    (100, 102460, 18994), 
    (200, 102460, 13056), 
    (300, 102460, 10784), 
    (400, 102460, 9153), 
    (u'sample_size', u'total_tok', u'unknown_tok_mean')
]

最後の項目が sqlite によって返されるヘッダーであることに注意してください。これは時々しか存在しません (多くの行が返される場合に存在する傾向があります)。結果が一貫している限り、ヘッダーが返されるかどうかを制御する方法が必要です 。

4

1 に答える 1

3

いいえ、最後の行はテーブルから返されたデータです。選択では、行データに列ヘッダーが含まれることはありません。

その情報利用できます.descriptionが、カーソルの属性として、 .fetchall().

つまり、他の何かがそのデータをテーブルに挿入し、SELECTは単にその情報を返しているだけです。

コマンドラインクライアントが行うことは、結果をフォーマットすることであり、そのように構成されている場合はヘッダー情報を追加しますが、SELECTそれ自体はステートメントの一部である動作ではありません。

于 2013-03-04T13:26:29.780 に答える