【问题标题】:iterating over tuples inside a tuple and using string inside tuples as a variable迭代元组内的元组并使用元组内的字符串作为变量
【发布时间】:2019-09-17 08:22:18
【问题描述】:

我在数据库中有很多表,我正在使用 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

How can I iterate over only the first variable of a tuple

【问题讨论】:

  • 我不太清楚您要做什么?你想要一个数据框列表(或字典)吗?
  • 我只是想将数据框分配给具有表名的变量

标签: python mysql tuples pymysql


【解决方案1】:

元组是不可变对象,你不能这样做,第一个查询返回的结果是一个元组的元组:

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}

【讨论】:

  • 是否有理由使用 (df,) 而不是 (df)?
  • 您可以创建对以将表名保留在第一个索引中,将数据框保留在第二个索引中,检查我的编辑
  • 谢谢!!!!之后我可以将它们更改为字典,因此我可以使用表名访问数据框?
  • 你需要字典就用字典综合直接检查我的编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多