当我使用时:
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注入的建议。
答案 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”获取有关如何处理此问题的建议。