目标 --> 我想使用Python自动化查询执行过程。
细节 --> 我的数据源是Teradata数据库,目的地是 .txt 文件。
我正在编写Python代码,以在Teradata中运行查询并将输出保存到.txt文件中。
问题 --> 尽管我能够运行查询并保存输出,但日文字符显示为“\x1a\x1a”。
例如,当我运行查询时,在Teradata SQL Assistant窗口中看到的输出是“愛してる”,而在文本文件中的输出是“\x1a\x1a”
我使用“PYCharm”进行编码
我使用下面的代码编写文件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import io
import pyodbc
import os
#Establish connection with Teradata
conn = pyodbc.connect('Coneection Parameters')
conn.setencoding(encoding='utf-8')
cur = conn.cursor()
conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
#Reading Query
scriptFile = open('query.sql','r')
script = scriptFile.read()
scriptFile.close()
#Executing Query
cur.execute(script)
rows = cur.fetchall()
#Writing the output to file
with open('results.txt','w') as f:
print(rows)
f.write('%s\n' % rows)
#Closing the Connection
cur.close()#close the query writing
conn.close()
使用的变量
results.txt -> 目标文件,我想要写入日语字符
我期望的样本输出为 ペット用品
我在文件“results.txt”中得到的输出 --> [('\x1a\x1a\x1a\x1a\x1a', )]
f
未定义,并且for
和下一行都没有正确缩进。此外,由于涉及编码,请使用 [tag:python2] 或 [tag:python3] 进行标记,并给出至少一行的确切内容和输出文件。"愛してる"
不可能变成"\x1a\x1a\x1a"
-\x1a
是替代字符(通常用于编码错误),但是"愛してる"
有四个字符,而您只有三个替代字符。还请指定您希望文件使用的编码方式(UTF-8?SJIS?EUCJP?)。 - Amadanrows
和row
是两个完全不同的变量,还是你的脚本仍然缺少必要的部分? - tripleee\x1a
只是 Esc 字符。适当的 Unicode 有一个独特的字符 U+FFFD,用于替换无效或不可表示的字符。 - tripleee