在Python中,将SQL查询的输出显示为表,就像在SQL中一样

2024-09-29 21:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

这似乎是一个基本的函数,但我对Python还不熟悉,所以也许我没有正确地搜索这个函数。

在Microsoft SQL Server中,当

SELECT top 100 * FROM dbo.Patient_eligibility

你得到的结果就像

 Patient_ID | Patient_Name | Patient_Eligibility

     67456  | Smith, John  | Eligible
     ...         
     etc.

等等

因此,我正在通过Python运行到SQL的连接,希望输出与SQL中的完全相同。特别是使用在SQL查询中指定的列名和所有数据行。它不必出现在控制台或日志中,我只需要一种访问它的方法来查看其中的内容。

以下是我当前的代码尝试:

import pyodbc
conn = pyodbc.connect(connstr)
cursor = conn.cursor()

sql = "SELECT top 100 * FROM [dbo].[PATIENT_ELIGIBILITY]"
cursor.execute(sql)
data = cursor.fetchall()

#Query1
for row in data :
    print (row[1])

#Query2
print (data)

#Query3
data

我的理解是,患者资格的结果以某种方式存储在变量数据中。查询1、查询2和查询3表示访问我在谷歌上搜索到的数据的方法——这似乎又是基本的东西。

Query1的结果给出了第一列的列表,在控制台中没有列名。在变量资源管理器中,“数据”显示为类型列表。当我打开它时,它只会说100次‘pyodbc模块的Row对象’,每行一次。不是我要找的。同样,我正在寻找与在Microsoft SQL Server中运行时得到的视图输出相同的类型。

运行查询2使我更接近这一点。结果看起来像一个.csv文件-不可读,但它都在那里,在控制台。

运行'Query3,仅仅是'data'变量,可以得到最接近的结果,但是没有列名。我怎样才能把列名带进来?

更直接地说,如何让“data”显示为一个干净的表,并在某个地方显示列名?既然这是一个基本的SQL函数,您能告诉我使用一个SQL友好的库吗?

还要注意,这两个查询都不要求我知道列名或列宽。我在这里的整个方法都试图查看查询结果并快速检查数据-如果我不知道哪一列是Patient_id,我就看不到Patient_id是否正确加载。

谢谢你的帮助!


Tags: 数据方法函数fromsqldataservertop
1条回答
网友
1楼 · 发布于 2024-09-29 21:26:38

不止一个问题,我会尽力帮助你并给你建议。

  1. I am running a connection to SQL through Python as such, and would like the output to look exactly the same as in SQL.

您正在混合使用SQL作为语言和一些交互式SQL工具的格式化输出。 SQL本身没有任何关于数据“外观”的内容。

  1. Also note that neither of the Queries required me to know the column names or widths. My entire method here is attempting to eyeball the results of the Query and quickly check the data - I can't see that the Patient_IDs are loading properly if I don't know which column is patient_ids.

正确。cursor.fetchall只返回数据。

可以从cursor.description读取字段信息。

PEP-O249中阅读更多内容

  1. how do i get 'data' to appear as a clean table with column names somewhere?

这取决于你如何定义“出现”。

你想要:文本输出,html页面或者GUI?

  • 对于文本输出:您可以从cursor.description读取列名并在数据之前打印它们。

  • 如果你想要html/excel/pdf/other-找一些适合你口味的库/框架。

  • 如果您想要类似于SQL工具的交互体验,我建议您查看jupyter-notebook+pandas

类似于:

pandas.read_sql_query(sql)

将给您“干净的表”没有比SQLDeveloper/SSMS/DBeaver/other-gives更糟糕的了。

相关问题 更多 >

    热门问题