【发布时间】:2020-08-19 19:30:06
【问题描述】:
我有一个 SQL Server 数据库,其中保存着材料数据,我需要将材料的总使用量输出到 CSV 文件中。我可以毫无问题地获取所有数据并将其打印到终端,但是当尝试使用 Pandas 并将其放入带有命名列的 CSV 时,我得到的只是 Pandas 用 SQL 中的每一行重写第一行。我还没有让 Pandas 创建 CSV,但我可以在终端为来自 SQL 的每一行重写第一行时看到它。我正在使用一个函数从 SQL 中取出每一行。
import pyodbc
import pandas as pd
def checkmaterials():
server_name = '********'
db_name = '********'
username = '********'
password = '********'
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server_name + '\WEMSQLEngine' ';DATABASE=' + db_name + ';UID=' + username + ';PWD=' + password + '')
#if conn is not None:
#print('Connected to SQL')
cursor = conn.cursor()
query = cursor.execute("SELECT * FROM MATERIAL")
data = query.fetchall()
for row in data:
MatCode = row[0]
IngName = row[1]
Receipt1 = row[4]
Usage1 = row[6]
#This print statement prints each line to terminal and does the math to get usage correctly
#print (f'Daily {MatCode} {IngName} {dailyusage(Usage1,Receipt1)} lbs')
df = pd.DataFrame(query, columns=[MatCode,IngName,Receipt1,Usage1])
#print (df)
def dailyusage(Usage1, Receipt1):
return Usage1 - Receipt1
checkmaterials()
【问题讨论】:
-
使用
read_sql()和.to_csv()方法可以吗? pandas.pydata.org/pandas-docs/stable/reference/api/… 和 pandas.pydata.org/pandas-docs/stable/reference/api/… -
@jsmart 我会给他们一个机会,让你知道。
标签: python sql-server pandas csv