使用 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,所以只添加renameSeries.reset_indexdrop=True如果需要默认RangeIndex

【讨论】:

以上是关于使用 pymysql 从 mysql 获取数据但返回 nan的主要内容,如果未能解决你的问题,请参考以下文章

python pymysql.cursors如何从mysql存储过程中获取INPUT返回结果

AWS RDS MySQL 数据库未从 pymysql 获取 INSERT 语句

python3使用pymysql库连接MySQL的常用操作

Python数据库编程pymysql

python进阶(十mysql:PyMySQL)

python3使用PyMysql连接mysql数据库