2011-07-06 38 views
2

我有一个Python 2.7和SQLite3项目。fetchone()将int变量设置为元组

我想在SQLite3数据库列中存储一个整型变量,然后就可以设置一个变量为SQLite列的值。

连接正常,列存在,它是类型“int”。

我使用此代码提取数据:

Trailcrest.fish_score = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 

的“AN”可变我打电话是作为一个参数提供的,当这个代码包含在DEF被调用。

但是,当我查看Trailcrest.fish_score变量,而数据已写入它时,它已被写为一个元组,而不是一个整数。该变量最初包含一个整数。

这是怎么回事?我该如何解决它? (我假设我需要做一些演员,但我不确定)

回答

6

fetchone()仍然会返回一个类似Row的对象,您需要从中解析出单个字段,需要从中获取数据

row = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 
if row is not None: # or just "if row" 
    Trailcrest.fish_score = row[0] 
else: 
    pass # didn't get back a row 
+0

它的工作原理!谢谢。作为使用此代码的任何人的一个提示,请确保你在“else:”之下放置了一些东西,而不是注释,否则编译器会对你生气。 – CodeMouse92

+2

@Jason:“pass”关键字是为此目的而创建的(占位符)。 – bernie