python - Python 错误:元组索引必须是整数或切片,而不是 str
问题描述
我有一个从 mysql 数据库中获取信息的功能:
def get_group_members_from_db():
dbName = get_environ('DBNAME')
# Establish connection to database
try:
db = db_establish_connection()
if db:
# report count sessions by role, agent version, agent type, and realm
sql = (
'SELECT T1.field1, T1.field2, T1.field3, T1.field4, T1.field5 '
'FROM ' + dbName + '.table AS T1 '
'GROUP BY T1.field1, T1.field2, T1.field3, T1.field4, T1.field5; '
)
cursor = db.cursor()
cursor.execute(sql)
result = cursor.fetchall()
cursor.close()
db.disconnect()
#print(result)
return result
except Exception as ex:
print(ex)
和另一个将新表插入数据库的函数:
def finding_unique_users(db,dbName):
# Establish connection to database
try:
users = get_group_members_from_db()
if db:
# report count sessions by role, agent version, agent type, and realm
sql = (
'INSERT INTO ' + dbName + ' .table2 ( '
'fieldA, fieldB, fieldC, fieldD, fieldE, fieldF ) '
'VALUES ('
'%s,%s,%s,%s,%s);'
)
values = list()
for user in users:
#print(users)
if user['fieldA']:
values.append((
user['fieldA'],
user['fieldB'],
user['fieldC'],
user['fieldD'],
user['fieldE'],
user['fieldF']
))
cursor = db.cursor()
cursor.execute('TRUNCATE TABLE ' + dbName + '.table2;')
cursor.executemany(sql,values)
db.commit()
result = cursor.fetchall()
cursor.close()
return result
except Exception as ex:
print(ex)
运行时遇到一个错误,提示元组索引必须是整数或切片,而不是 str。当我从数据库中打印出用户时,我收到了一个元组。请帮助我进一步纠正这个错误。
解决方案
函数fetchall如果元组返回一个列表,其中第一项是 Bâle 列,第二项是值如果您更喜欢 dict 的列表,您可以构造它
res= cursor.fetchall()
cursor.close()
result = []
for raw in res:
result.append({raw[0] : raw[1})
return result
推荐阅读
- python - 有没有办法在 GTK 中获取系统中所有已安装字体的列表
- bokeh - 散景单击 gmap 图上绘制的圆圈
- java - 如何修复在其主体中返回 null 的响应实体对象
- fortran - 尝试将非连续数组写入屏幕时,使用 coarray 标志(并启用运行时检查)编译的应用程序中止
- azure - IIS Web 部署任务正在将源代码部署到服务器
- angular - 无法改变 ionic 3 中每个组件的行为
- azure - 在 ested Azure ARM 模板中使用变量
- macos - QEMU:引导失败:EFI 硬盘
- sql - Postgres SQL中如何高效存储大量包含字符串的数据?
- bitbucket-pipelines - bitbucket 管道中的 JSON 值替换