給定以下代碼 windows上的輸出具有完整的8位字節,因爲在Mac上,該字符串已被編碼爲7位ASCII,其編碼看起來像「替換」。Sqlalchemy CLOB在Windows和Mac上返回不同的結果
MAC 25 50 44 46 2D 31 2E 33 0A 25 43 69 3F 3F 0A 35 20 30 20 6F 62 6A 0A 3C圖3C 2F
WINDOWS 25 50 44 46 2D 31圖2e 33 0A 25 C7 EC 8F A2 0A 35 20 30 20 6F 62 0A 6A 3C圖3C 2F
我有SQLAlchemy的,蟒,CX-Oracle和即時客戶的同一版本安裝
我已經嘗試了不同的convert_unicode/coerse_unicode型標誌無濟於事
任何幫助,將不勝感激
from sqlalchemy import Table, MetaData
from sqlalchemy import create_engine
from sqlalchemy.sql import select
if __name__ == '__main__':
connection_string = 'oracle+cx_oracle://user:[email protected]:1521/orcl'
engine_args = {
'echo': False,
'convert_unicode': True,
'coerce_to_unicode': True
}
src_engine = create_engine(connection_string, **engine_args)
metadata = MetaData()
table = Table('POLICY_CONTRACT', metadata, autoload=True, autoload_with=src_engine, schema='TROPICS_POLICY')
s = select(table.columns)
q = src_engine.execute(s)
r = q.fetchone()
for k in r.keys():
v = r[k]
if k == 'contract_content':
v1 = " ".join(["{0:02x}".format(ord(x)) for x in v])
print("{0} : {1} : {2}\n".format(k, type(v), v[:100]))
感謝您指出我在正確的方向 我通過添加下面一行到我的Python腳本 os.putenv(「NLS_LANG」,「AMERICAN_AMERICA.WE8MSWIN1252排序的問題') – user3066737
上面的設置對我來說不適用於python 3,因此我最終使用os.putenv('NLS_LANG','_.WE8ISO8859P1') 這就是LATIN1 – user3066737
很高興聽到它的幫助,如果這解決了您的問題隨時接受答案,謝謝 – tbone