通过sql查询进行数据类型转换

时间:2017-03-16 14:26:26

标签: python django oracle

我遇到数据类型转换问题。 使用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)作为模型字段。

1 个答案:

答案 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()