【发布时间】:2022-01-13 22:46:36
【问题描述】:
我必须对整个表进行多个sql查询,并将它们连接成一个大数据表。
我有一个字典,其中键是团队名称,值用作首字母缩略词,其中首字母缩略词是 mySQL 数据表的前缀
engine = create_engine('mysql+mysqlconnector://%s:%s@%s/%s' % (mysql_user, mysql_password, mysql_host, mysql_dbname), echo=False, pool_recycle=1800)
mysql_conn = engine.connect()
team_dfs = []
nba_dict = {'New York Knicks': 'nyk',
'Boston Celtics': 'bos',
'Golden State Warriors': 'gsw',
'New York Knicks': 'nyk'}
for name, abbr in nba_dict.items()
query = f'''
SELECT *
from {abbr}_record
'''
df = pd.read_sql_query(query, mysql_conn)
df['team_name'] = name
team_dfs.append(df)
team_dfs = pd.concat(team_dfs)
有没有更好的方法来重构这段代码并使其更高效?
【问题讨论】:
-
如果要一起查询,请不要将每个团队的记录分开。避免
select *。不要试图围绕数据抢先优化你的代码。获取包含结构化数据的数据库,性能和简单代码将由此产生。 -
100% 同意。我不是数据库管理员,上述任务的目标是创建一个黄金层表,将所有这些数据组合在一个地方。
-
既然这是修复损坏架构的一次性任务,那么效率重要吗?
标签: python mysql performance iteration query-optimization