简单的sqlite问题

时间:2010-11-10 17:42:19

标签: python sql sqlite

当我使用时:

for i in Selection:
    Q = "SELECT columnA FROM DB WHERE wbcode='"+i+"' and commodity='1'"
    cursor.execute(Q)
    ydata[i] = cursor.fetchall()

我明白了:

ydata = {'GBR': [(u'695022',), (u'774291',), (u'791499',)... ]}

如何更改代码以获取:

ydata = {'GBR': [695022, 774291, 791499,...]}

非常感谢你。 obs:这只是一个简化的例子。尽量避免提出关于sql注入的建议。

2 个答案:

答案 0 :(得分:4)

[int(x[0]) for x in cursor.fetchall()]

答案 1 :(得分:2)

基于此以及您的另一个问题,您需要了解SQLite的亲和力以及如何填充数据库。其他数据库要求存储在列中的值都是相同的类型 - 例如所有字符串或所有整数。 SQLite允许您存储任何内容,以便每行中的类型可以不同。

对于第一个近似值,如果你为该行输入一个字符串,那么你将得到一个字符串,输入一个整数,你将得到一个整数。在你的情况下,你得到字符串,因为你输入字符串而不是整数。

但是,您可以声明列关联,SQLite将在您插入数据时尝试转换。例如,如果列具有整数亲和性,那么如果您插入的内容可以安全/正确地转换为整数,那么SQLite将这样做,因此字符串“1”将确实存储为整数1,而“1 1”将存储作为字符串“1 1”。

阅读此页面以了解详细信息。如果你使用正确的类型,你会发现更容易获取数据。

http://www.sqlite.org/datatype3.html

如果您要导入CSV数据,请启动APSW shell并使用“.help import”获取有关如何处理此问题的建议。