Elu*_*Elu 44 python sqlalchemy pandas
首先,我是开发界的一个全新的人,我目前正在学习人工智能/数据科学课程,我的工作之一是使用 SQL 数据库使用 Prophet 进行预测,然后使用这些预测进行预测PowerBI 但目前,我被 Python 代码困住了,我最初不是开发人员,所以我不知道问题出在哪里:
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
from prophet import Prophet
import pymysql
engine = create_engine("mysql+pymysql://root:Password@localhost:3306/data")
query = "SELECT Cle_Produit, Date_Facturation, SUM(Quantite) AS Total_Quantite FROM ventes GROUP BY Cle_Produit, Date_Facturation"
df = pd.read_sql_query(query, engine)
df = df.pivot(index='Date_Facturation', columns='Cle_Produit', values='Total_Quantite')
df = df.reset_index()
df.rename(columns={'Date_Facturation': 'ds', 'Total_Quantite': 'y'}, inplace=True)
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat']].to_csv('forecast.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
它返回给我这条消息:
导入失败。交互式情节将不起作用。回溯(最近一次调用最后一次):文件“f:\Backup\Cours\Cours\Explo Data\app3.py”,第 9 行,在 df = pd.read_sql_query(query, engine) 文件“F:\Programmes\Anaconda\ envs\myenv\lib\site-packages\pandas\io\sql.py",第 397 行,在 read_sql_query return pandas_sql.read_query( File "F:\Programmes\Anaconda\envs\myenv\lib\site-packages\pandas\ io\sql.py”,第 1560 行,在 read_query 结果 = self.execute(*args) 文件“F:\Programmes\Anaconda\envs\myenv\lib\site-packages\pandas\io\sql.py”中,行1405,在执行中返回 self.connectable.execution_options().execute(*args, **kwargs) AttributeError: 'OptionEngine' 对象没有属性 'execute'
请问有人可以帮助我吗?
我希望这个 python 脚本创建一个包含先知预测的 csv 文件。我希望Prophet使用数据库数据中的表ventes,并且它应该使用列Cle_Produit
,Quantite
并且Date_Facturation
sna*_*erb 52
最新版本的 SQLAlchemy (2.0) 已删除Engine.execute
. 目前您可能需要降级 SQLAlchemy
python -m pip install --upgrade 'sqlalchemy<2.0'
Run Code Online (Sandbox Code Playgroud)
(或者如果您使用 conda 则等效的 conda 命令)。
或者,正如Gord Thompson在他的评论中指出的那样,用sqlalchemy.text包装查询。
from sqlalchemy import text
# ...
with engine.begin() as conn:
query = text("""SELECT * FROM tbl""")
df = pd.read_sql_query(query, conn)
Run Code Online (Sandbox Code Playgroud)
或者查看InnocentBystander的答案以获取解决方法。
Bra*_* Es 30
这里讨论类似的问题。
适用于 sqlAlchemy 2.0 并且与之前的 api 一致的语法是。
from sqlalchemy import create_engine, text as sql_text
connection = create_engine(bla)
query = "blo"
df = pandas.read_sql_query(con=connection.connect(),
sql=sql_text(query))
Run Code Online (Sandbox Code Playgroud)
Inn*_*der 10
对于 pandas 来说read_sql_query
,有两件事很容易出错。为了避免此错误,您需要传递连接(而不是引擎),并且需要使用文本函数来转换查询。
import pandas as pd
from sqlalchemy import create_engine, text
engine = create_engine("mysql+mysqldb://usr:pwd@localhost/dbs")
conn = engine.connect()
query = text('SELECT * FROM table')
df = pd.read_sql_query(query, conn)
Run Code Online (Sandbox Code Playgroud)
将“usr”、“pwd”、“dbs”和“table”替换为您自己的字符串。您还可以使用 pandas 读取整个表格,read_sql_table
而无需使用文本。设置如上:
df = pd.read_sql_table('table', conn)
Run Code Online (Sandbox Code Playgroud)
有关引擎和文本的更多信息,请参阅 sqlalchemy 文档的一些链接:
https://docs.sqlalchemy.org/en/20/core/engines_connections.html
https://docs.sqlalchemy.org/en/20/core/sqlelement.html#sqlalchemy.sql.expression.text
归档时间: |
|
查看次数: |
35754 次 |
最近记录: |