在Jupyter中MySQL查询或标识符太长了吗?

时间:2019-01-31 15:28:46

标签: python mysql pandas sqlalchemy

我有一个Jupyter笔记本,我要在其中执行查询。我正在使用sqlalchemy,如果我在PyCharm中将其作为脚本运行,则以下代码可以正常工作:

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('mysql+mysqlconnector://user:password@server_address:3306/DBase', echo=False)
connection = engine.connect()

query = "SELECT week(date) as week, count(*) FROM table GROUP BY week"
df = pd.read_sql(query, con=engine)
print(df)

但是,当我尝试在Jupyter笔记本中运行此程序时,会出现错误:

  

ProgrammingError:(mysql.connector.errors.ProgrammingError)1059   (42000):标识符名称“ SELECT week(date)as week,count(*)FROM   表GROUP BY week'太长了

当我尝试

query = "SELECT count(*) as number FROM table"

它确实可以正常工作。一旦在查询中添加一些语句,它将引发错误。 我不确定为什么它专门抱怨标识符。这似乎不是由于“ AS”引起的,因为如果我忽略该错误并添加WHERE语句,它也会抛出错误。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

而不是使用它:

df = pd.read_sql(query, con=engine)

您应该使用此:

df = pd.read_sql_query(query, con=engine)

您查询以某种方式得到治疗的SQL表的名字,当你调用read_sql,之所以说是未知的,我和我也找不到它的一个原因from the documentation