In Python, display output of SQL query as a table, just like it does in SQL
这似乎是一个基本的函数,但我对python还是个新手,所以我可能没有正确地搜索这个函数。
在Microsoft SQL Server中,当
1 | SELECT top 100 * FROM dbo.Patient_eligibility |
你得到的结果是
1 2 3 4 5 | Patient_ID | Patient_Name | Patient_Eligibility 67456 | Smith, John | Eligible ... etc. |
等。
我正通过python运行到SQL的连接,希望输出与SQL中的输出完全相同。特别是-列名称和SQL查询中指定的所有数据行。它不必出现在控制台或日志中,我只需要一种访问它的方法来查看其中的内容。
以下是我当前的代码尝试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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的结果给出了第一列的列表,控制台中没有列名。在变量资源管理器中,"data"显示为类型列表。当我打开它时,它只说了100次"pyodbc模块的行对象",每行一个。不是我要找的。同样,我在寻找与在Microsoft SQL Server中运行相同的视图输出。
运行query2让我更接近这一点。结果看起来像一个.csv文件-不可读,但它就在控制台中。
运行query3,只运行'data'变量,得到最接近的结果,但没有列名。如何输入列名?
更直接地说,如何让"数据"显示为某个位置有列名的干净表?由于这是一个基本的SQL函数,您能指导我到一个SQL友好的库来代替它吗?
还要注意,这两个查询都不需要我知道列名或列宽。我这里的整个方法都是试图观察查询结果并快速检查数据-如果我不知道哪一列是患者ID,我看不到患者ID是否正确加载。
谢谢你的帮助!
不止一个问题,我会尽力帮助你,给你建议。
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本身没有任何关于数据"外观"的信息。
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.
对的。
现场信息可从
阅读更多PEP-O249
how do i get 'data' to appear as a clean table with column names somewhere?
这取决于你如何定义"出现"。
你想要:文本输出,HTML页面或者图形用户界面?
对于文本输出:您可以从
cursor.description 中读取列名称,并在数据之前打印它们。如果你想要HTML/Excel/PDF/Other-找一些适合你口味的库/框架。
如果您想要类似于SQL工具的交互式体验,我建议您查看
jupyter-notebook +pandas 。
类似:
1 | pandas.read_sql_query(sql) |
将给您"干净的表"没有什么比sqldeveloper/ssms/dbeaver/other更糟糕的了。