我使用pyodbc从表中读取数值,但不是仅仅给我' 100'它给了我"(十进制(' 100.00& #39;))
有没有办法获得这个数字?
我正在跑步:
cursor.execute("SELECT CurrentBalance as Numeric FROM [AccountsQA].[dbo].[AccountBalance] where AccountId = '2000013' and Currency = 'ZAR'")
如果已经回答了我的道歉,但我还没有找到解决方法。
答案 0 :(得分:1)
据推测,该表将该列定义为DECIMAL
类型,因此pyodbc返回一个Decimal对象以忠实地表示该值。
假设该值可能在小数点后面有数字,您可以"只获得数字"通过致电float()
,但如果列代表金钱(<34; CurrentBalance&#34;建议),不想要这样做。使用float
值来表示金钱是错误想法。
相反,您应该继续将该值用作十进制。
答案 1 :(得分:0)
通过执行以下操作,我设法得到了这个数字:
cursor.execute("SELECT CurrentBalance as Numeric FROM [AccountsQA].[dbo].[AccountBalance] where AccountId = '2000013' and Currency = 'ZAR'")
result = cursor.fetchall()
amount = result[0][0]
&#34;导致[0]&#34;正在返回&#34;(十进制(&#39; 100.00&#39;),)#34;但是当我使用&#34;结果[0] [0]时它只返回&#34; 100.00& #34;
答案 2 :(得分:0)
我知道这个问题已经存在了将近三年,但是如果它可以帮助其他人搜索,我的建议是导入熊猫并使用它来解析它。这种方法多次帮助了我。
import pyodbc
import pandas as pd
conn = pyodbc.connect('Driver={SQL Server};'
'Server=YourServer;'
'Database=YourDatabase;')
##this is for trusted connection.
###You may also need to add Username and password for your code
data = pd.read_sql_query(("SELECT CurrentBalance as Numeric FROM [AccountsQA].[dbo].[AccountBalance] where AccountId = '2000013' and Currency = 'ZAR'"), conn)
print(data.CurrentBalance[0])
这将为您提供CurrentBalance列中第一个响应的值。
答案 3 :(得分:-1)
从一开始就在查询中处理它会更清晰:
cursor.execute("SELECT CAST(CurrentBalance AS INTEGER) AS Numeric FROM [AccountsQA].[dbo].[AccountBalance] WHERE AccountId = '2000013' AND Currency = 'ZAR'")