[Python]如何从SQL数据库获取纯数据,而非带括号逗号的返回结果?
问题根因
Python所有符合DB-API规范的数据库驱动,查询返回的每行结果默认都是元组格式,哪怕你只查单个字段,也会返回长度为1的元组,也就是你看到的(data,)格式,只要取元组的第0位元素就能拿到实际存储的值。
现有代码快速修复
只需要在所有取值的位置加[0]取元组第一个元素即可:
def getDatabaseInfo(): """This function gets all the user information from the database""" mycursor.execute("SELECT userId FROM users") #Puts all userID's into the userID list. This list is then used to start creating #objects once the user class is made for x in mycursor: userID.append(x[0]) # 取元组第一位拿到实际userId值 for x in userID: newUser = User(x) mycursor.execute("SELECT username FROM users WHERE userId = " + str(x) + "") for y in mycursor: newUser.setusername(y[0]) # 取元组第一位拿到实际用户名 mycursor.execute("SELECT password FROM users WHERE userId = " + str(x) + "") for y in mycursor: newUser.setpassword(y[0]) # 取元组第一位拿到实际密码 mycursor.execute("SELECT first_name FROM users WHERE userId = " + str(x) + "") for y in mycursor: newUser.setfirst_name(y[0]) # 取元组第一位拿到实际名字 mycursor.execute("SELECT last_name FROM users WHERE userId = " + str(x) + "") for y in mycursor: newUser.last_name = y[0] # 取元组第一位拿到实际姓氏 mycursor.execute("SELECT appetizer FROM users WHERE userId = " + str(x) + "") for y in mycursor: newUser.appetizer = y[0] # 取元组第一位拿到实际配置值 #Stores instance into dictionary with username as key users[newUser.username] = newUser #prints information newUser.print_user_info()
性能优化方案(可选)
你当前的实现会对每个用户发起5次单独的字段查询,用户量较大时性能损耗非常高,可以直接一次查询拉取所有用户的全部需要字段,大幅减少数据库交互次数:
def getDatabaseInfo(): """This function gets all the user information from the database""" # 单次查询拉取所有需要的字段,避免循环请求数据库 mycursor.execute("SELECT userId, username, password, first_name, last_name, appetizer FROM users") for row in mycursor: # 直接解包元组拿到所有字段值 user_id, username, password, first_name, last_name, appetizer = row newUser = User(user_id) newUser.setusername(username) newUser.setpassword(password) newUser.setfirst_name(first_name) newUser.last_name = last_name newUser.appetizer = appetizer users[newUser.username] = newUser newUser.print_user_info()
内容的提问来源于stack exchange,提问作者William Hiatt
相关产品推荐
相关产品推荐

