我遇到数据类型转换问题。 使用django和pypyodbc lib我尝试从oracle DB(外部)接收数据并将其保存到本地应用程序数据库中。
import pypyodbc
def get_data(request):
conn = pypyodbc.connect("DSN=...")
cursor = conn.cursor()
cursor.execute("SELECT value FROM table")
data = cursor.fetchall()
for row in data:
d = External_Data(first_val = row[0])
d.save()
值的输出是" 0,2"我收到了错误消息:
could not convert string to float: b',02'
当我将sql语句更改为:
时SELECT cast(value as numeric(10,2) from table)
我收到了错误消息:
[<class 'decimal.ConversionSyntax'>]
如何更改该数据以获取浮动数据并保存。我使用DecimalField(max_digits = 10,decimal_places = 2)作为模型字段。
答案 0 :(得分:0)
我认为此问题伴随着隐式类型更改。
当您从get_data
函数获取数据时,row[0]
var for
循环似乎是Bytes
变量。
首先,我建议您使用row[0]
检查print(type(row[0]))
的数据类型。
如果结果为Bytes
,您可以这样做:
import pypyodbc
def get_data(request):
conn = pypyodbc.connect("DSN=...")
cursor = conn.cursor()
cursor.execute("SELECT value FROM table")
data = cursor.fetchall()
for row in data:
data = float(str(row[0]).replace(',','.'))
d = External_Data(first_val=data)
d.save()