Python pyodbc数据库连接和数字格式
我正在使用PyODBC库将Python算法连接到Oracle数据库 我正在使用以下命令:Python pyodbc数据库连接和数字格式,python,oracle,number-formatting,pyodbc,Python,Oracle,Number Formatting,Pyodbc,我正在使用PyODBC库将Python算法连接到Oracle数据库 我正在使用以下命令: def connectToServer(DSN,Server,Password): connString = "DSN="+DSN+";Uid="+Server+";Pwd="+Password connObject = odbc.connect(connString) return connObject connObject = connectToServer('xxx','x
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')
连接运行良好,我可以将命令传递给服务器创建、删除表、执行过程等
但是,我无法通过以下方式提取数据:
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:无法将字符串转换为浮点值:b'5,3'
我认为问题在于格式编号FR与EN,我正在基于FR的服务器上工作-服务器以FR格式编号提供值,即5,3而不是5.3,Python在尝试将假定的数字SQL类型转换为双精度时感到困惑
是否可以将PyODBC连接配置为以EN数字格式检索值?与SQL Developer或Toad等客户端的设置方式相同?以下是如何在Python中将您的语言环境转换为法语:
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
locale.atof('1000,53')
这将字符串转换为浮点数,并带有法国地区的设置。我不确定如何将其与Oracle联系起来,我自20世纪90年代以来就没有使用过Oracle,但希望这能让您走上正确的道路。您可以将其转换为字符串,然后使用此方法进行转换,但在DB级别可能有更好的方法。以下是如何在Python中将您的语言环境转换为法语:
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
locale.atof('1000,53')
这将字符串转换为浮点数,并带有法国地区的设置。我不确定如何将其与Oracle联系起来,我自20世纪90年代以来就没有使用过Oracle,但希望这能让您走上正确的道路。您可以将其强制转换为字符串,然后使用此方法进行转换,但在DB级别可能有更好的方法。您的意思可能是:locale.setlocalelocal.LC_ALL,“en_GB.UTF-8”您的意思可能是:locale.setlocalelocal.LC_ALL,“en_GB.UTF-8”