1

我实际上并没有使用 Python 的经验,但想用它将 CSV 数据表转换为 sqlite3 db,认为 python 会很完美。我面临一个问题:我想将一个参数绑定为字符串,但如果它“看起来”像一个数字,它会以 int 形式存储到数据库中,删除前导零......我正在尝试处理电话号码这里...

c.execute( "CREATE TABLE foo (a text, b text)" )

...

strA = "069-888888" # bound as string
strB = "069777777"  # bound as int, value in db is 697777777
c.execute( "INSERT INTO foo (a,b) values (?,?)", [strA, strB] )

有没有办法强制 strB 绑定为字符串?

4

1 回答 1

2

SQLite 可以很好地处理这种情况:

>>> import sqlite3
>>> conn = sqlite3.connect('/tmp/test.db')
>>> cur = conn.cursor()
>>> cur.execute('CREATE TABLE foo (a text, b text)')
>>> strA = "069-888888"
>>> strB = "069777777"
>>> cur.execute('INSERT INTO foo (a,b) values (?,?)', (strA, strB))
>>> cur.execute('select * from foo;')
<sqlite3.Cursor object at 0x1101c39d0>
>>> cur.fetchall()
[(u'069-888888', u'069777777')]

换句话说:这里没有问题。

SQLite 3 使用类型关联而不是固定类型进行操作,但是因为您将列声明为TEXT即使您要插入整数数据,它仍然会转换为文本并按原样存储。

于 2013-08-14T12:34:18.977 回答