Python-код для извлечения запросов SQL вместе с именами столбцов и преобразования его в следующий формат json - PullRequest
0 голосов
/ 05 мая 2019

Я попытался извлечь результаты SQL-запроса и преобразовать его в формат JSON.Я частично преуспел.Однако я ищу следующий формат:

[
{
   "JId": 1,
    "Jinfo": "Failed",
   "Jno": "Job1"
},
{
    "JId":2,
    "Jinfo":"Failed",
    "Jno":"Job2"
},
{
    "JId":3,
    "Jinfo":"Failed",
    "Jno":"Job3"
}
]

Существует таблица с именем 'jobfail' со следующими данными:

JId Jinfo  Jno
1,  "Failed", "Job1"
2,  "Failed", "Job2"
3,  "Failed", "Job3"

Мне удалось получить имя столбца и значения отдельно,Я был в состоянии преобразовать значения в JSON также.Но я не получил его в формате "column_name: value".

import pyodbc
import json

cncn=pyodbc.connect('DRIVER={SQL Server};Server=Server_name;Database=dbname;Trusted_Connection=yes;')
if(cncn):
    print("Connected")
    query1="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'jobfail'"
    query2="SELECT * FROM dbo.jobfail"
    data=[]
    column_list=[]
    cursor = cncn.cursor()
    cursor.execute(query1)
    for cname in cursor.fetchall():
        column_list.append(list(cname))
    print(column_list)
    cursor.execute(query2)
    rs=cursor.fetchall()
    for row in rs:
        data.append(list(row))
    print(json.dumps(data, indent=4))

Я ожидаю, что вывод будет в вышеуказанном формате.Я не мог объединить имя столбца и соответствующие значения для формирования JSON.Ниже приведен частичный вывод, который я получил.

[['jid'], ['Jinfo'], ['Jno']]             


[
[
    1,
    "Failed",
    "Job1"
],
[
    2,
    "Failed",
    "Job2"
],
[
    3,
    "Failed",
    "Job3"
]
]

1 Ответ

0 голосов
/ 05 мая 2019

SQL Server вернет вам результаты запроса как JSON , если хотите.EG

use tempdb
drop table if exists #t
go
create table #t(JId int, Jinfo varchar(30), Jno varchar(30))


insert into #t
values
(1,  'Failed', 'Job1'),
(2,  'Failed', 'Job2'),
(3,  'Failed', 'Job3')

go
select *
from #t t
for json path

выходы

[
    {
        "JId": 1,
        "Jinfo": "Failed",
        "Jno": "Job1"
    },
    {
        "JId": 2,
        "Jinfo": "Failed",
        "Jno": "Job2"
    },
    {
        "JId": 3,
        "Jinfo": "Failed",
        "Jno": "Job3"
    }
]
...