[英]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.