【发布时间】:2017-10-06 14:36:37
【问题描述】:
我已经构建了一些工具来为引用动态 Redshift 表的用户创建前端列表框。表格中的新项目,它们会自动出现在列表中。
我想将列表按字母顺序放入数据库中,以便动态列表框按该顺序显示数据。
从 API 下载列表后,我尝试在上传之前在 Pandas 数据框中按字母顺序对列表进行排序。这非常有效:
df.sort_values(['name'], inplace=True, ascending=True, kind='heapsort')
但是当我尝试按该顺序上传到 Redshift 时,它会在上传时丢失该顺序。数据显示在按字母顺序排列的块中。
db_conn = create_engine('<redshift connection>')
obj.to_sql('table_name', db_conn, index = False, if_exists = 'replace')
由于第三方工具 (Alteryx) 的工作方式,我需要在数据库中按字母顺序保存这些数据。
如何修改to_sql才能正确上传数据?
【问题讨论】:
-
不确定,但可能是因为 index.试试
df.sort_values(['name'], inplace=True, ascending=True, kind='heapsort').reset_index(drop=True) -
1) 如果您以这种方式将数据加载到 redshift,它会非常慢(这对您来说可能没问题) 2) 如果没有 order 语句,您无法保证 select 的结果顺序。我建议您在表格中添加一列来存储您希望它们出现的顺序。
标签: python sorting amazon-redshift pandas-to-sql