有没有办法在Python中使用列名而不是列索引来检索SQL结果列值?
result = `select name, deptname from employee;`
我试过下面的一个:
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
cursor.execute("SELECT name, category FROM animal")
result_set = cursor.fetchall()
for row in result_set:
print "%s, %s" % (row["name"], row["deptname"])
我在这里遇到如下错误:
TypeError: tuple indices must be integers, not str
任何帮助都会很棒吗?
答案 0 :(得分:2)
实际上你得到了你想要的东西。 你只需要将行不是作为字典而是作为元组使用。 这意味着索引是数字,而不是字符串。 尝试
print "%s, %s" % (row[0], row[1])
代替
答案 1 :(得分:1)
您没有正确指定需要字典光标。在调用connect()
方法时,请设置cursorclass
:
import MySQLdb
conn = MySQLdb.connect(user='user',
passwd='password',
db='db_name',
cursorclass=MySQLdb.cursors.DictCursor)
cursor = conn.cursor()