这似乎是一个基本的函数,但我对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是否正确加载。
谢谢你的帮助!
不止一个问题,我会尽力帮助你并给你建议。
您正在混合使用SQL作为语言和一些交互式SQL工具的格式化输出。 SQL本身没有任何关于数据“外观”的内容。
正确。
cursor.fetchall
只返回数据。可以从
cursor.description
读取字段信息。在PEP-O249中阅读更多内容
这取决于你如何定义“出现”。
你想要:文本输出,html页面或者GUI?
对于文本输出:您可以从
cursor.description
读取列名并在数据之前打印它们。如果你想要html/excel/pdf/other-找一些适合你口味的库/框架。
如果您想要类似于SQL工具的交互体验,我建议您查看
jupyter-notebook
+pandas
。类似于:
将给您“干净的表”没有比SQLDeveloper/SSMS/DBeaver/other-gives更糟糕的了。
相关问题 更多 >
编程相关推荐