如何在Python中将Sql Server结果导出到Excel

问题描述 投票:0回答:5

我正在使用我们自己的框架

我想使用ion python将sql server结果集(查询的一个)导出到excel。

在Python文件中我可以调用该sql查询结果。

然后我想将该查询结果导出到带标题的 Excel 中。

这意味着一旦我调用Python文件,查询结果应该保存为Excel电子表格。

请问有人可以帮我正确地做这个吗?

python
5个回答
18
投票

我会使用 pyodbc(用于与数据库交互)和 pandas(用于操作数据并导出为电子表格)来完成此操作。

这是一个简单的例子:

import pyodbc
import pandas as pd

cnxn = pyodbc.connect(< db details here >)
cursor = cnxn.cursor()
script = """
SELECT * FROM my_table
"""

cursor.execute(script)

columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.DataFrame(list(data), columns=columns)

writer = pd.ExcelWriter('foo.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()

通读文档,你就会没事的。

==更新==

对于更新版本的 pandas,这是处理 SQL 查询的更好方法:

import pyodbc
import pandas as pd

cnxn = pyodbc.connect(< db details here >)
script = """
SELECT * FROM my_table
"""

df = pd.read_sql_query(script, cnxn)

2
投票
import pandas as pd
import xlsxwriter
import pyodbc


conn = pyodbc.connect('Driver={SQL Server}; Server=ServerIP; uid=UID; pwd=Password; Trusted_Connection=No;')
 with pd.ExcelWriter("Output.xlsx", engine="xlsxwriter", options = {'strings_to_numbers': True, 'strings_to_formulas': False}) as writer:
        try:
            df = pd.read_sql("Select * from Orders", conn)
            df.to_excel(writer, sheet_name = "Sheet1", header = True, index = False)
            print("File saved successfully!")
        except:
            print("There is an error")

0
投票

查看以下模块:

  • pyodbc - 连接到 SQL Server
  • xlwt - 写入 Excel 电子表格

如果您在安装这些模块并阅读文档后仍然遇到问题,那么欢迎您通过在新问题中发布您的脚本以及看到的任何错误消息来请求进一步的帮助。 :)


0
投票

我之前使用 openpyxl 取得了巨大成功,并且 他们的教程很简单,但足够全面,可以开始使用,而不会遇到任何问题。


0
投票

HI 使用下面的 clode 连接您的数据并将这些数据导出到 Excel

请使用 pip 命令在命令行中安装 dist。

pip 安装 pypyodbc pip 安装 pandas pip 安装 xlsxwriter pip 安装请求

代码__________________

import pypyodbc as odbc 
import pandas as pd
import xlsxwriter
import requests
import datetime

conn_str = (
    r'Driver=SQL Server;'
    r'Server=AJAYZORI\SQLEXPRESS;'
    r'Database=Production;'
    r'Trusted_Connection=yes;'
    )

try:
    conn =  odbc.connect(conn_str)
except:
    print("Error")
    exit()


try:
    with conn.cursor() as cursor:
        # Read data from database
        sql = "SELECT * FROM MAT_LISTING_MUMBAI_DATABASE_TBL"
        cursor.execute(sql)

        # Fetch all rows

        columns = [desc[0] for desc in cursor.description]
        rows = cursor.fetchall()
        #print(rows[0])
        # Print results
        #for row in rows:
        #    print(row)
        
        df = pd.DataFrame(list(rows), columns=columns)
        now = datetime.datetime.now()
        print(now)
        writer = pd.ExcelWriter( now.strftime("%B  %G HH_%I MM_%M  SS_%S %p") + " Output.xlsx", engine="xlsxwriter",)
        df.to_excel(writer, sheet_name='data')
        writer.close()

finally:
    conn.close()

    
© www.soinside.com 2019 - 2024. All rights reserved.