pyodbc数据库连接和数字格式

时间:2015-07-24 11:21:46

标签: python oracle number-formatting pyodbc

我使用pypyodbc库将Python算法连接到Oracle数据库。

我使用以下内容:

def connectToServer(DSN,Server,Password):
    connString = "DSN="+DSN+";Uid="+Server+";Pwd="+Password
    connObject = odbc.connect(connString)

    return connObject

connObject = connectToServer('xxx','xxx','xxx')

连接工作正常,我可以将命令传递给服务器(创建,删除表,执行程序等......)

但是我无法通过以下方式提取数据:

# print top lines of a given table
def selectTopFromTable(connObject,tableName,numberRow=100):
    cur = connObject.cursor()
    command = '''SELECT * FROM ''' + tableName +''' WHERE ROWNUM <= ''' + str(numberRow) + '''; '''  
    cur.execute(command)

    for row in cur.fetchall():
        print(row)

selectTopFromTable(connObject,'xxx')

收到以下错误:

  

ValueError:无法将字符串转换为float:b&#39; 5,3&#39;

我认为问题在于格式编号FR与EN(我在基于FR的服务器上工作) - 服务器提供FR格式编号的值(即5,3而不是5.3)并且Python很混乱尝试将所谓的NUMBER SQL类型转换为double时。

是否可以配置pypyodbc连接以检索EN编号格式的值? (与SQL Developer或Toad等客户端设置相同的方式)?

1 个答案:

答案 0 :(得分:0)

以下是如何将您的语言环境转换为Python中的法语:

import locale

locale.setlocale('locale.LC_ALL', 'fr_FR.UTF-8')
locale.atof('1000,53')

这会将字符串转换为浮点数,并使用法国语言环境的设置。我不确定如何将其与Oracle结合起来(自20世纪90年代以来我没有使用过Oracle),但希望这会让你走上正确的道路。您可以将其转换为字符串,然后使用此方法进行转换,但在数据库级别可能有更好的方法。