繁体   English   中英

Python SQLAlchemy 未在结果中返回列名

[英]Python SQLAlchemy not returning column names in results

非常基本的表,基本的查询。

我的表有这 5 列:

project_id, name, job, status, state

我希望查询与特定 project_id 相关的所有名称。

我收到一个元组作为结果集,只有字段值而不是字段名称。

RESULT: ('5', 'bob', 'worker', 'union', '123-456-7890', 'CA')

我将如何修改此查询以接收输出中的字段名称(即列标题)?

DESIRED: {project_id: '5', name:'bob', job:'worker', status:'union', state:'CA'}

代码:

from sqlalchemy import create_engine

def my_engine(db):
    USERNAME = 'admin'
    PASSWORD = 'password'
    HOST = 'localhost'
    DB_PORT = 1234
    DATABASE = str(db)
    return create_engine('mysql+pymysql://{0}:{1}@{2}:{3}/{4}'
                         .format(USERNAME, PASSWORD, HOST, DB_PORT, DATABASE), pool_pre_ping=True)

def query_mysql(self, table_name, col_title, srx_val):
    myconn = my_engine('dbname')
    return_list = myconn.execute("SELECT * FROM `{0}` WHERE `{1}` = '{2}'"
                                .format(table_name, col_title, srx_val)).fetchall()
    return return_list

outdata = self.query_mysql('users', 'project_id', self.PROJ_NUM)

#returns: ('5', 'bob', 'worker', 'union', '123-456-7890', 'CA')

Lucas Lima 在这里提供了解决方案。

您将修改您的代码如下:

def query_mysql(self, table_name, col_title, srx_val):
    myconn = my_engine('dbname')
    resproxy = myconn.execute("SELECT * FROM `{0}` WHERE `{1}` = '{2}'"
                                .format(table_name, col_title, srx_val)).fetchall()
    results = []
    if len(data)==0: return results

    for row_number, row in enumerate(resproxy):
        results.append({})
        for column_number, value in enumerate(row):
            results[row_number][row.keys()[column_number]] = value

    return results

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM