我使用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等客户端设置相同的方式)?
答案 0 :(得分:0)
以下是如何将您的语言环境转换为Python中的法语:
import locale
locale.setlocale('locale.LC_ALL', 'fr_FR.UTF-8')
locale.atof('1000,53')
这会将字符串转换为浮点数,并使用法国语言环境的设置。我不确定如何将其与Oracle结合起来(自20世纪90年代以来我没有使用过Oracle),但希望这会让你走上正确的道路。您可以将其转换为字符串,然后使用此方法进行转换,但在数据库级别可能有更好的方法。