Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将SQL表输出为csv,但未显示正确的小数位数_Python_Sql_Csv_Notepad_Decimalformat - Fatal编程技术网

使用python将SQL表输出为csv,但未显示正确的小数位数

使用python将SQL表输出为csv,但未显示正确的小数位数,python,sql,csv,notepad,decimalformat,Python,Sql,Csv,Notepad,Decimalformat,我正在尝试将SQL中的表([dbo].[temporary_table])作为csv输出。有两列包含四舍五入到小数点后4位的数字,但我想将它们四舍五入到小数点后2位 这是我要输出为csv的SQL表: 这是我用来将该表输出为csv的python代码: import pandas as pd import numpy as np import pyodbc import pandas as pd import xlsxwriter import csv sql_conn = pyodbc.co

我正在尝试将SQL中的表([dbo].[temporary_table])作为csv输出。有两列包含四舍五入到小数点后4位的数字,但我想将它们四舍五入到小数点后2位

这是我要输出为csv的SQL表:

这是我用来将该表输出为csv的python代码:

import pandas as pd
import numpy as np
import pyodbc
import pandas as pd 
import xlsxwriter
import csv

sql_conn = pyodbc.connect('DRIVER={DRIVER_NAME}; SERVER=SERVER_NAME; DATABASE=DATABASE_NAME; Trusted_Connection=yes') 

query = """select  [Name]
                   ,cast([Debits] as decimal(19,2)) as 'Debits'
                  ,cast([Credits] as decimal(19,2)) as 'Credits'
                  from [dbo].[temporary_table]"""
  
                                    
df = pd.read_sql(query, sql_conn)

file_out = 'C:\\Desktop\\Outputs\\testfile.csv'

df.to_csv(file_out, index = False, header=True, quoting=csv.QUOTE_NONE)
当我在记事本中打开csv文件时,只有最后两行被正确舍入。我猜这是因为小数点不是0。有没有办法将第一行设置为50.00而不仅仅是50.0

这是我在记事本中打开csv文件时看到的:

这就是我想要的:


如果有人能提供帮助,我将不胜感激。

Pandas to_csv有一个float_format参数,它将强制数据帧中的float数据类型为指定格式

df.to_csv(file_out, index = False, float_format="%.2f", header=True, quoting=csv.QUOTE_NONE)
链接到和,但似乎“%.2f”是您所需要的。

选择cast(四舍五入([Debits],2)作为十进制(19,N2))