我正在使用我们自己的框架
我想使用ion python将sql server结果集(查询的一个)导出到excel。
在Python文件中我可以调用该sql查询结果。
然后我想将该查询结果导出到带标题的 Excel 中。
这意味着一旦我调用Python文件,查询结果应该保存为Excel电子表格。
请问有人可以帮我正确地做这个吗?
我会使用 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)
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")
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()