【问题标题】:create pandas data frame from SQL result从 SQL 结果创建熊猫数据框
【发布时间】:2018-08-02 05:14:20
【问题描述】:

我正在尝试使用以下代码

mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'compData'
app.config['MYSQL_DATABASE_HOST'] = '0.0.0.0'
mysql.init_app(app)

@app.route("/Authenticate")
def Authenticate():
    cursor = mysql.connect().cursor()
    cursor.execute("SELECT * from abclimit 5")
    pro_info = pd.DataFrame(data=cursor.fetchall(), index=None,columns=[i[0] for i in cursor.description])

    return Response(json.dumps(pro_info),  mimetype='application/json')

if __name__ == "__main__":
    app.run()

但是给我错误

File "pathe\frame.py", line 303, in __init__
    raise PandasError('DataFrame constructor not properly called!')
pandas.core.common.PandasError: DataFrame constructor not properly called!

我想从 sql 查询结果创建 pandas DF

【问题讨论】:

  • 虽然我建议尝试 MaxU 提供的解决方案,但我认为您上面所做的问题是您已经调用了两次cursor.fetchall()。当您在 DataFrame 构造函数中调用它时,它不会返回任何结果。删除第一个电话可能会解决您的问题。
  • 抱歉我的错误检查已更新。

标签: python mysql sql pandas dataframe


【解决方案1】:

In Pandas you can read directly from the DB:

from sqlalchemy import create_engine
import pymysql
import pandas as pd

db_connection = 'mysql+pymysql://mysql_user:mysql_password@mysql_host/mysql_db'
conn = create_engine(db_connection)

df = pd.read_sql("SELECT * from abc limit 5", conn)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2022-09-24
    • 2017-06-22
    • 2018-11-04
    • 2021-06-02
    • 2016-01-13
    相关资源
    最近更新 更多