sqlalchemy+pandas:错误 'OptionEngine' object has no attribute 'execute','str' object has no attribute '_execute_on_connection'
场景:使用 sqlalchemy+pandas
1. 'OptionEngine' object has no attribute 'execute'
import pandas as pd
from sqlalchemy import create_engine, text engine = create_engine('mysql+pymysql://root:root1234@127.0.0.1:3308/beststock')
sql = "select max(id) as maxrid FROM tspro_stock_basic " df = pd.read_sql(sql, engine)
print(df)
Error: 提示报错信息:
Traceback (most recent call last):
File "C:\Users\Google_he\PycharmProjects\trunk\PyStock\UnitTest\Test_Sqlalchemy.py", line 15, in <module>
df = pd.read_sql(sql, engine)
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 591, in read_sql
return pandas_sql.read_query(
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 1561, in read_query
result = self.execute(*args)
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 1406, in execute
return self.connectable.execution_options().execute(*args, **kwargs)
AttributeError: 'OptionEngine' object has no attribute 'execute'
排查:
查看 pd.read_sql 的 python 源码,原来,需要传递的是一个 connection,
def read_sql(
sql,
con,
index_col: str | list[str] | None = None,
coerce_float: bool = True,
params=None,
parse_dates=None,
columns: list[str] | None = None,
chunksize: int | None = None,
) -> DataFrame | Iterator[DataFrame]:
打印 传递的 engine 类型
print(type(engine))
// <class 'sqlalchemy.engine.base.Engine'>
// 原来对象传递错了,建立 connection,可以通过 engine.connect() 方法 print(type(engine.connect()))
<class 'sqlalchemy.engine.base.Connection'>
所以,需要改成
import pandas as pd
from sqlalchemy import create_engine, text engine = create_engine('mysql+pymysql://root:root1234@127.0.0.1:3308/beststock')
sql = "select max(id) as maxrid FROM tspro_stock_basic " # df = pd.read_sql(text(sql), con=engine.connect()) df = pd.read_sql(sql, engine.connect())
print(df)
2. 'str' object has no attribute '_execute_on_connection'
改成上面的代码后,出现了下面的错误
Traceback (most recent call last):
File "D:\Program Files (x86)\Python39\lib\site-packages\sqlalchemy\engine\base.py", line 1410, in execute
meth = statement._execute_on_connection
AttributeError: 'str' object has no attribute '_execute_on_connection' The above exception was the direct cause of the following exception: Traceback (most recent call last):
File "C:\Users\Google_he\PycharmProjects\trunk\PyStock\UnitTest\Test_Sqlalchemy.py", line 16, in <module>
df = pd.read_sql(sql, engine.connect())
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 591, in read_sql
return pandas_sql.read_query(
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 1561, in read_query
result = self.execute(*args)
File "D:\Program Files (x86)\Python39\lib\site-packages\pandas\io\sql.py", line 1406, in execute
return self.connectable.execution_options().execute(*args, **kwargs)
File "D:\Program Files (x86)\Python39\lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute
raise exc.ObjectNotExecutableError(statement) from err
sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'select max(id) as maxrid FROM tspro_stock_basic '
继续查看 read_sql() 的源码,关于入参 sql 的注释及示例
sql : str or SQLAlchemy Selectable (select or text object)
SQL query to be executed or a table name.
再次改成下面,还是错误依旧
df = pd.read_sql("select max(id) as maxrid FROM tspro_stock_basic ", engine.connect())
确定是 入参 sql 的类型有问题,再次看到上面有提到的 text object,看来还是需要转换一下
import pandas as pd
from sqlalchemy import create_engine, text engine = create_engine('mysql+pymysql://root:root1234@127.0.0.1:3308/beststock')
sql = "select max(id) as maxrid FROM tspro_stock_basic " df = pd.read_sql(text(sql), con=engine.connect())
print(df) ---- output ----
maxrid
0 5066
sqlalchemy+pandas:错误 'OptionEngine' object has no attribute 'execute','str' object has no attribute '_execute_on_connection'的更多相关文章
- Django2.2报错 AttributeError: 'str' object has no attribute 'decode'
准备将 Django 连接到 MySQL,在命令行输入命令 python manage.py makemigrations 后报错: AttributeError: 'str' object has ...
- Django项目与mysql交互进行数据迁移时报错:AttributeError: 'str' object has no attribute 'decode'
问题描述 Django项目启动,当我们执行命令 python manage.py makemigrations 出现如下错误: File , in last_executed_query query ...
- 解决编码问题:AttributeError: 'str' object has no attribute 'decode'
1. 问题发现: 出现:读取文件,对其进行解码,出现错误,AttributeError: 'str' object has no attribute 'decode' 解释:属性错误,str对象不包含 ...
- Django 运行报异常:AttributeError: 'str' object has no attribute 'get'
Technorati Tags: Python,Django,Web 在使用django.contrib.auth用户机制进行用户的验证.登录.注销操作时,遇到这个异常. 首先是写了一个登录的视图,要 ...
- Python PyInstaller 打包报错:AttributeError: 'str' object has no attribute 'items'
pyinstaller打包时报错:AttributeError: 'str' object has no attribute 'items' 网上查询,可能是setuptools比较老: 更新一下 p ...
- 【Python-遇到的Error】AttributeError: 'str' object has no attribute 'input_text'
学习类的实例化的时候遇到了AttributeError: 'str' object has no attribute 'input_text', 以下是报错的代码及修改正确的代码. class shu ...
- python2 'str' object has no attribute 'decode'
'.decode('hex') 上述代码,报错: 'str' object has no attribute 'decode' 查找原因: https://stackoverflow.com/ques ...
- python3.x运行的坑:AttributeError: 'str' object has no attribute 'decode'
1.Python3.x和Python2.X版本有一些区别,我遇到了两个问题如下: a.第一个报:mysqlclient 1.3版本不对: 解决办法:注释掉这行即可: b.第二个报:字符集的问题: 报错 ...
- python自动化测试,读取excal数据报"'str' object has no attribute 'items'"问题解决
通过python进行自动化测试,为了方便,对代码和数据进行了分离,此处把测试数据放到了excal表格中.requests.post请求时报"'str' object has no attri ...
- Django项目启动 AttributeError: ‘str‘ object has no attribute ‘decode‘ 问题
Watching for file changes with StatReloader Performing system checks... System check identified no i ...
随机推荐
- CCRD_TOC_2008年第6期
中信国健临床通讯 2008年第6期 EULAR专辑 目 录 类风湿关节炎 1. 积极的上台阶治疗策略让早期RA患者获得持久临床缓解 van DR Woude D, et al. EULAR 200 ...
- Sonarqube安装(Docker)
一,拉取相关镜像并运行 # 拉取sonarqube镜像 docker pull sonarqube:9.1.0-community 在运行之前要提前安装postgres并允许,新建数据库名为sonar ...
- video遇到问题汇总
1.调取视频自动播放video.play()时报错 Uncaught (in promise) DOMException: play() failed because the user didn't ...
- NLP知识栈
- mysql 数据库的一些参数,常用模版和调优方式
innodb_buffer_pool_size :这个参数是Mysql数据库最重要的参数之一,表示InnoDB类型的 表 和索引的最大缓存 .它不仅仅缓存 索引数据 ,还会缓存 表的数据 .这个值越大 ...
- c# 游戏设计:地图移动
想实现一个小游戏,先做地图移动.步骤记录如下: 1.百度到一张大的迷宫地图,放在项目的debug目录下,备用. 2.创建一个winform项目,不添加任何界面元素. 3.添加数据成员如下: Pictu ...
- java开发环境搭建 (JDK卸载与安装、配置)
一.window系统下java环境搭建 1.卸载JDK 查看安装目录:此电脑 -> 右键选择属性 -> 高级系统设置 -> 环境变量 -> 查看系统变量那一栏中的JAVA_HO ...
- thinkphp5框架使用总结
因为采用了mvc模式,所以理解上为了简便,把控制中心作为一个浏览对象去处理,其他不要去考虑只把它们当做附属物 一.路径访问方式 http://网址/index.php/模块/控制器/操作.html 其 ...
- Note Taking App Comparison: Notesnook vs Joplin
I have used many note-taking apps, including Notion, oneNotes, Obsidian, Sublime Text, etc. Here I w ...
- C# 连接SQLSERVER数据库常用操作类
//数据库连接字符串 public static string connectStr = @"server=.;database=test;uid=sa;pwd=123456;"; ...