【发布时间】: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