Python Pandas读取\u sql错误读取my \u sql日期函数
我目前正在使用SQLAlchemy将数据从MySQL数据库下载到Pandas中。数据库中的时间戳数据是字符串形式的,因此我使用MySQL函数str_to_date将其转换为日期值,然后再将其读入Pandas。然而,当我这样做的时候,我注意到熊猫没有正确地解释这个值 下面是我构造的一个简单示例,用于描述该问题Python Pandas读取\u sql错误读取my \u sql日期函数,python,mysql,pandas,sqlalchemy,pymysql,Python,Mysql,Pandas,Sqlalchemy,Pymysql,我目前正在使用SQLAlchemy将数据从MySQL数据库下载到Pandas中。数据库中的时间戳数据是字符串形式的,因此我使用MySQL函数str_to_date将其转换为日期值,然后再将其读入Pandas。然而,当我这样做的时候,我注意到熊猫没有正确地解释这个值 下面是我构造的一个简单示例,用于描述该问题 import sqlalchemy as sqla import pandas as pd # Connect to database settings = {'host': '127.0
import sqlalchemy as sqla
import pandas as pd
# Connect to database
settings = {'host': '127.0.0.1', 'user': 'root', 'passwd': 'password', 'db': 'data'}
connection_str = "mysql+pymysql://{}:{}@{}/{}".format(settings['user'], settings['passwd'],
settings['host'], settings['db'])
engine = sqla.create_engine(connection_str)
con = engine.connect()
# Build query
sql_string = sqla.text("SELECT str_to_date('2021-04-05', '%Y-%m-%d') AS date;")
# Read data
dataframe = pd.read_sql(sql_string, con)
raw_value = con.execute(sql_string).fetchone()
con.close()
接下来,如果我打印上述两个值,我将看到以下结果
> print(dataframe)
date
0 None
> print(raw_value)
(datetime.date(2021, 4, 5),)
如您所见,如果我使用游标来获取数据,那么数据将作为datetime.date对象正确地拉入python。但是,如果我尝试使用Pandas的read_sql函数来获取数据,它将显示为None值。为什么会这样,我能做点什么来解决熊猫的问题吗?(例如,也许我可以修改一下我的查询以得到我想要的结果?)
如果有帮助的话,我目前正在运行Python 3.7.9。就我安装的软件包而言:Pandas的版本是1.1.3,sqlalchemy的版本是1.3.20,pymysql的版本是1.0.2。我从中提取此数据的MySQL数据库非常旧,运行在5.7.20版上。如果您为read_sql()指定parse_dates参数会怎么样?尝试从查询中删除str_to_date(),并设置parse_dates={'date':'%Y-%m-%d'}我无法使用MySQL server 5.6.13(早于5.7.20)和pandas、SQLAlchemy和PyMySQL的当前版本再现您的问题。对我来说很好。