Python:从sqlite3中提取TEXT为字符串

时间:2016-12-16 15:37:32

标签: python sqlite

第一周使用任何语言进行编程并需要一些帮助:我试图从Python中的sqlite3中提取TEXT值作为字符串。我得到一个值作为列表而不是str:

system_id = raw_input ("What is your System ID: ")

例如,用户输入' Elmer'

conn = sqlite3.connect("API.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS SYSTEMID (systemid TEXT)''')
conn.commit()
conn.close()

conn = sqlite3.connect("API.db")
c = conn.cursor()
system_id = c.execute('select systemid from SYSTEMID').fetchall()
conn.close()

那么如何将变量system_id作为字符串?如果我从这里打印出来就像[(你,Elmer)],我想要system_id = Elmer

1 个答案:

答案 0 :(得分:1)

正如Ev. Kounis所指出的那样,默认情况下fetchall()将返回listtuple,其长度等于指定的变量。

在你的情况下,你得到一个长度为1的元组,因为你要求一个变量。

在获取字符串时,默认情况下也会返回字符串u前面的'Elmer'(这只是意味着它是Unicode字符串)。

你应该做两件事:

  1. 通过将u的连接更改为text_factor来摆脱str

    con.text_factory = str
    
  2. 访问元组的第一个元素以仅获取字符串'Elmer'

    fetch = c.execute('select systemid from SYSTEMID').fetchall()
    system_id = fetch[0][0] # First element in first tuple in list