2

データベースにタプルを挿入しようとしています。コードにエラーはありません。ただし、行全体を印刷している間、出力にはダミー文字が含まれています。出力も投稿にコピーされます。コードのバグを理解するのを手伝ってください。これは大きなプロジェクトのダミー コードです。

コード:

import sqlite3 as sql

def foo():
    db = sql.connect('test.db')
    db.execute('drop table if exists test')
    db.execute('create table test (t1 text, i1 int)')

    str = """insert into test(t1,i1) values ('one',1 ) """
    db.execute(str)
    db.execute('insert into test(t1,i1) values (?, ?)', ('two',2))

    db.commit()

    cursor = db.execute('select * from test')

    for row in cursor:
        print row

出力:

(u'one', 1)
(u'two', 2)

出力に示されているように、コードの期待される出力は 2 つの要素のタプルです。代わりに、出力に文字「u」があります。

ありがとう

4

1 に答える 1

2

文字列のuプレフィックスは、それがUnicode文字列であることを意味しますが、期待どおりに2要素のタプルがあります。

デフォルトでは、sqlite3モジュールはテキストをUnicode文字列として返します。text_factory代わりにutf-8でエンコードされたバイト文字列を受信する場合は、接続の属性をに設定できますstr

于 2012-10-25T16:22:51.790 に答える