python 读取mysql的每个表格 根据每张表time列的净流入列求和,把每张表所有相同的时间都按照这种方式求出来,如果其中一张表的某一个时间的净流入是null,则让null=0
时间: 2024-02-18 17:05:16 浏览: 217
python面试题245题(附答案).docx
好的,针对您的需求,我更新一下代码:
```python
import pymysql
# 连接到 MySQL 数据库
connection = pymysql.connect(host='localhost', user='user', password='password', db='database')
# 获取表格名称
cursor = connection.cursor()
cursor.execute("SHOW TABLES;")
tables = [table[0] for table in cursor.fetchall()]
# 定义查询语句和时间列表
query = "SELECT IFNULL(SUM(net_flow), 0) FROM {} WHERE time = '{}';"
times = ['2022-01-01', '2022-01-02', '2022-01-03']
# 遍历每个表格,求和相同时间的净流入列
sums = {}
for table in tables:
table_sums = []
cursor.execute(f"SELECT DISTINCT time FROM {table};")
table_times = [time[0] for time in cursor.fetchall()]
for time in times:
if time in table_times:
cursor.execute(query.format(table, time))
result = cursor.fetchone()[0]
table_sums.append(result)
else:
table_sums.append(0)
sums[table] = table_sums
# 关闭数据库连接
connection.close()
# 处理求和结果
# ...
```
在这个版本中,我将查询语句修改为 `SELECT DISTINCT time FROM {table};`,以获取每个表格中存在的时间值。然后,我在外部循环中遍历时间列表,并在内部循环中检查时间值是否存在于表格的时间列表中。如果存在,我执行查询并将结果添加到名为 `table_sums` 的列表中。如果不存在,我将 `0` 添加到 `table_sums` 列表中。最后,我将 `table_sums` 列表添加到名为 `sums` 的字典变量中,其中键为表格的名称。
注意,如果您的时间列不是 `time`,您需要将查询语句和代码中的时间列名称替换为实际的名称。
阅读全文