【问题标题】:using pymysql to get data from mysql but return nan使用 pymysql 从 mysql 获取数据但返回 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

这是因为我的数据在加密数据空间中吗?

【问题讨论】:

    标签: python mysql pandas pymysql


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2012-02-10
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2021-06-23
      • 2013-12-10
      • 1970-01-01
      • 2020-06-19
      相关资源
      最近更新 更多