使用 pymysql 从 mysql 获取数据但返回 nan
Posted
技术标签:
【中文标题】使用 pymysql 从 mysql 获取数据但返回 nan【英文标题】:using pymysql to get data from mysql but return nan 【发布时间】:2021-12-06 22:58:29 【问题描述】:我尝试使用 python 从 mysql 获取一些数据但返回 nan。 有我的代码:
import csv
import pandas as pd
from sqlalchemy import create_engine, types
from pandas.io import sql
import pymysql
import numpy as np
db = pymysql.connect(host='192.0.0.0',port=0000,user='123',passwd='123321',db='matomo',charset='utf8')
cursor = db.cursor()
try:
SQL_Query = pd.read_sql_query(
'''SELECT name FROM matomo_site''',db
)
df0=pd.DataFrame(SQL_Query, columns=['a'])
except:
print("Error")
db.rollback()
db.close()
print(df0)
结果:
a
0 NaN
1 NaN
2 NaN
还有matomo_site上的mysql数据:
idsite name
1 Example
2 abc
3 def
我应该像这样输出数据:
a
0 Example
1 abc
2 def
这是因为我的数据在加密数据空间中吗?
【问题讨论】:
【参考方案1】:你设置的列a
有问题,在DataFrame
中不存在,所以返回的列a
被缺失值填充。
你需要改变:
df0=pd.DataFrame(SQL_Query, columns=['a'])
到:
df0 = pd.read_sql_query(
'''SELECT name FROM matomo_site''',db
).rename(columns='name':'a').reset_index(drop=True)
因为read_sql_query
返回DataFrame
,所以只添加rename
和Series.reset_index
和drop=True
如果需要默认RangeIndex
。
【讨论】:
以上是关于使用 pymysql 从 mysql 获取数据但返回 nan的主要内容,如果未能解决你的问题,请参考以下文章
python pymysql.cursors如何从mysql存储过程中获取INPUT返回结果