【问题标题】:Permanently sorting a table using SQLAlchemy使用 SQLAlchemy 对表进行永久排序
【发布时间】:2022-01-19 13:24:50
【问题描述】:

我已连接到 mysql 数据库并尝试将表的两列排序为:

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import text
import pandas as pd
engine_query="mysql+pymysql://"+username+":"+password+"@"+server+"/"+database
engine = sqlalchemy.create_engine(engine_query)
with engine.connect() as conn:
    conn.execute(text("ALTER TABLE NG_Inventory_Inputs ORDER BY Contract_Name asc, Date asc"))

上面的代码没有显示任何错误,但相应的列也没有在表中排序。使用下面的代码查看表的数据时和之前一样:

query = "SELECT * FROM NG_Inventory_Inputs"
sql_engine = sqlalchemy.create_engine(engine_query).connect()
data = pd.read_sql(query, sql_engine)

谁能帮我使用sqlalchemy或python中的任何其他库对表without creating another table的列进行排序?
任何帮助将不胜感激。

【问题讨论】:

  • 为什么不直接将 order by 添加到您的选择查询中?
  • 这不是一个真正的 Python 或 SQLAlchemy 问题,而是一个纯 MySQL 问题。我建议不要尝试通过ALTER TABLE 进行排序,而是使用create index idx on NG_Inventory (Contract_Name, Data); 为表创建索引,并在执行SELECT 时使用ORDER BY Contract_Name asc, Date asc
  • 谢谢@Iain 和 vaizki。我不知道为什么我想对列进行永久排序...

标签: python mysql sqlalchemy alter


【解决方案1】:

根据定义,表没有“顺序”。

SELECT 的输出可以通过ORDER BY 子句动态排序。一个合适的INDEX可能让它运行得更快。

您想解释一下您的目标是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多