簡體   English   中英

pyodbc 數據庫連接和數字格式

[英]pyodbc database connection and number format

我正在使用 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:無法將字符串轉換為浮點數:b'5,3'

我認為問題在於格式編號 FR 與 EN(我正在基於 FR 的服務器上工作)-服務器提供 FR 格式編號的值(即 5,3 而不是 5.3),並且 Python 在嘗試轉換時感到困惑推測 NUMBER SQL 類型為雙精度。

是否可以配置 pypyodbc 連接以檢索 EN 數字格式的值? (與 SQL Developer 或 Toad 等客戶端的設置方式相同)?

以下是在 Python 中將語言環境轉換為 France 的方法:

import locale

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

這會將字符串轉換為浮點數,並使用法國語言環境的設置。 我不確定如何將其與 Oracle 聯系起來(自 1990 年代以來我就沒有使用過 Oracle),但希望這能讓您走上正確的道路。 您可以將其轉換為字符串,然后使用此方法進行轉換,但在 DB 級別可能有更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM