我在数据库中有很多表,我正在使用 pymysql 连接到我的数据库并获取所有表名。当我打印所有表名时,它们存储如下:
tables = (('table1',), ('table2',), ('table3',), etc...)
我想要做的是对每个表,将它们变成一个具有自己表名的数据框。这是我试过的:
for table in tables:
table[0] = pd.read_sql(f'select * from {table[0]}', con = conn)
并且还通过将元组转换为列表,但是我认为字符串是问题所在,我如何摆脱撇号以便我可以将它们用作变量或者没有这样的方法?
我找不到任何关于 SO 的相关问题,只有一些给了我一些想法的东西。
TypeError: 'tuple' object does not support item assignment when swapping values
最佳答案
元组是不可变对象(immutable对象)你不能这样做,第一个查询返回的结果是一个元组的元组:
some_tuple[dome_index] = value
这将生成一个元组的元组,其中一个元素是数据框:
tables = tuple((pd.read_sql(f'select * from {table_name}', con = conn),) for (table_name,) in tables)
编辑:
您可以创建一个元组对 table_name, dataframe
:
tables = tuple((table_name, pd.read_sql(f'select * from {table_name}', con = conn)) for (table_name,) in tables)
你需要字典:
tables = {table_name: pd.read_sql(f'select * from {table_name}', con = conn) for (table_name,) in tables}
关于python - 遍历元组内的元组并使用元组内的字符串作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970181/