作者jeijei (让我们看云去)
看板Python
标题[问题] python写中文到teradata的问题
时间Thu Sep 13 00:14:08 2018
大家好
最近要用python3写资料到teradata
但遇到神奇的事
teradata的VARCHAR栏位
写入英文与数字没问题
但写入中文字就不行了
程式:
connection= pyodbc.connect("driver={Teradata};dbcname=" + host + ";uid=" + user + ";pwd=" + pwd + ";charset=utf8;",
autocommit=True)
connection.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
connection.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
connection.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-8')
connection.setencoding(encoding='utf-8')
cursor= connection.cursor()
cursor.execute("INSERT INTO table(CUSTOMER_ID, HEADQ_BR_CD,
STATUS, OWNER_NAME,
BUSINESS_NAME,ADDRESS,CAPITAL,ORGANIZATION_TYPE,REGISTER_DATE,REGISTER_TYPE,REGISTER_TYPE_NAME)
VALUES('3764H','aa','非营','cc','','','500','','102041','56555','')");
print("ok")
#disconnect
connection.close()
错误讯息
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-196-18f43ad125bd> in <module>()
21 cursor= connection.cursor()
22 # create employee table
---> 23 cursor.execute("INSERT INTO table(CUSTOMER_ID,
HEADQ_BR_CD, STATUS, OWNER_NAME,
BUSINESS_NAME,ADDRESS,CAPITAL,ORGANIZATION_TYPE,REGISTER_DATE,REGISTER_TYPE,REGISTER_TYPE_NAME)
VALUES('3764H','aa','非营','cc','','','500','','102041','56555','')");
24 print("ok")
25
#disconnect
Error: ('HY000', '[HY000] [Teradata][ODBC Teradata Driver][Teradata
Database](-6706)The string contains an untranslatable character. (-6706)
(SQLExecDirectW)')
在teradata建立table时
这些VARCHAR栏位的charset有设成LATIN
python3预设好像是utf-8
不知道是否因此影响中文字的写入?
我是不是写入前要把字串转成LATIN ?
python有办法把utf-8转成LATIN吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.77.125
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1536768851.A.AE5.html
1F:推 TuCH: latin(拉丁) 怎麽会有中文呢... 09/13 00:42