Python pymssql如何删除查询结果中的数据类型
我使用pymssql库查询结果,下面是一个示例: ('999001','4871C9DF-6E95-458B-B763-6BBB6C75F5D',1,真,2,'EOI','Drople',None,None,None,None,4,False,False,False,'Enbloc',False,False,False,None,None,None,None,None,None,None,None,None,None,None,None,Investment,'Investment',,None,None,None,None,None,None,销售顾问,None,Koe、 None,None,None,None,None,None,None,None,None,None,1,None,True,“整体”,False,False,False,False,False,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None“1.2亿美元”,无,无,无,无,无,无,无,无,无,小数('120000000.00'),小数('120000000.00'),小数('120000000.00'),小数('120000000.00'),小数('120000000.00')),“未披露”,“Hubville有限公司”,“一个激动人心的投资机会-首尔门户”,无,无,无,无,“一个激动人心的投资机会-首尔门户”,无,无,无,datetime.datetime(2016,1,15,0,5,51480000),datetime.datetime(2016,12,7,5,6,52633000),1,无) 但是我发现有一些值像Python pymssql如何删除查询结果中的数据类型,python,pymssql,Python,Pymssql,我使用pymssql库查询结果,下面是一个示例: ('999001','4871C9DF-6E95-458B-B763-6BBB6C75F5D',1,真,2,'EOI','Drople',None,None,None,None,4,False,False,False,'Enbloc',False,False,False,None,None,None,None,None,None,None,None,None,None,None,None,Investment,'Investment',,None
Decimal('120000000.00')
和datetime.datetime(2016,1,15,0,5,51480000)
。我只想得到没有Decimal()和datetime.datetime()的原始值。我如何实现这一点
这是我的密码:
def extract_opportunities(sql):
cursor.execute(sql)
opportunities = cursor.fetchall()
attributes = get_attributes_of_table(cursor)
availability_id_idx = attributes.index("availabilityid")
opportunity_dict = dict()
for idx, val in enumerate(opportunities):
opportunity_key = val[availability_id_idx]
opportunity_value = dict(zip(attributes, val))
opportunity_dict[opportunity_key] = opportunity_value
此函数的目的是使用属性和值对构造JSON格式文件,如:
{'Price': '120000000.00'}
而不是
{'Price': Decimal('120000000.00')}
您可以将
default
函数传递给将Decimal
转换为字符串的json.dumps
方法,如下所示:
导入日期时间
从十进制输入十进制
导入json
导入pymssql
def json_转储_默认值(obj):
#参考:http://stackoverflow.com/a/16957370/2144390
如果isinstance(对象,十进制):
返回str(obj)
如果isinstance(对象,datetime.datetime):
返回str(obj)
提高打字错误
conn=pymssql.connect(
host=r'localhost:49242',
数据库=“myDb”
)
crsr=conn.cursor(如dict=True)
sql=”“”\
挑选
将(十进制数(18,4),120000000)转换为价格,
将(日期时间,'2016-12-07 05:06:52.633')转换为销售日期
联合所有
挑选
将(十进制数(18,4),3400000000)转换为价格,
将(日期时间,'2017-01-09 07:44:32.1')转换为销售日期
"""
crsr.execute(sql)
rows=crsr.fetchall()
打印()
打印(“pymssql返回的行:”)
打印(行)
as_json=json.dumps(行,默认值=json_dumps\u默认值,排序键=False,缩进=2)
打印()
打印(“json.dumps返回的行:”)
打印(以json格式)
crsr.close()
康涅狄格州关闭
控制台输出为:
pymssql返回的行:
[{'Price':十进制('120000000.0000'),'SaleDate':datetime.datetime(2016,12,7,5,6,52,633000)},{'Price':十进制('3400000000.0000'),'SaleDate':datetime.datetime(2017,1,9,7,44,32,100000)}]
json.dumps返回的行:
[
{
“价格”:“120000000.0000”,
“销售日期”:“2016-12-07 05:06:52.633000”
},
{
“价格”:“3400000000.0000”,
“销售日期”:“2017-01-09 07:44:32.100000”
}
]
请注意,对于
Decimal
值,该函数可以返回float(obj)
而不是str(obj)
,但可能会发生精度损失。您可以将默认值函数传递给json.dumps
方法,该方法将Decimal
转换为字符串,如下所示:
导入日期时间
从十进制输入十进制
导入json
导入pymssql
def json_转储_默认值(obj):
#参考:http://stackoverflow.com/a/16957370/2144390
如果isinstance(对象,十进制):
返回str(obj)
如果isinstance(对象,datetime.datetime):
返回str(obj)
提高打字错误
conn=pymssql.connect(
host=r'localhost:49242',
数据库=“myDb”
)
crsr=conn.cursor(如dict=True)
sql=”“”\
挑选
将(十进制数(18,4),120000000)转换为价格,
将(日期时间,'2016-12-07 05:06:52.633')转换为销售日期
联合所有
挑选
将(十进制数(18,4),3400000000)转换为价格,
将(日期时间,'2017-01-09 07:44:32.1')转换为销售日期
"""
crsr.execute(sql)
rows=crsr.fetchall()
打印()
打印(“pymssql返回的行:”)
打印(行)
as_json=json.dumps(行,默认值=json_dumps\u默认值,排序键=False,缩进=2)
打印()
打印(“json.dumps返回的行:”)
打印(以json格式)
crsr.close()
康涅狄格州关闭
控制台输出为:
pymssql返回的行:
[{'Price':十进制('120000000.0000'),'SaleDate':datetime.datetime(2016,12,7,5,6,52,633000)},{'Price':十进制('3400000000.0000'),'SaleDate':datetime.datetime(2017,1,9,7,44,32,100000)}]
json.dumps返回的行:
[
{
“价格”:“120000000.0000”,
“销售日期”:“2016-12-07 05:06:52.633000”
},
{
“价格”:“3400000000.0000”,
“销售日期”:“2017-01-09 07:44:32.100000”
}
]
请注意,对于Decimal
值,函数可以返回float(obj)
而不是str(obj)
,但可能会出现精度损失。谢谢,这非常有用!谢谢,这非常有用!