SQLAlchemy在Windows上从文件读取查询

时间:2019-03-07 19:07:14

标签: python windows encoding

我想从计算机中的查询脚本中读取表格。
我发现命令很简单:

with open(sql_file, 'r') as opened:
  query = alq.text(opened.read())

第一个问题与编码有关:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 
in position 7963: character maps to <undefined>

因此,我们执行操作,搜索答案以将参数添加到命令open(sql_file, encoding='utf8')中并执行查询。

engine.execute(query)

现在错误更加棘手:

ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] 
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]
Incorrect syntax near '\ufeff'. (102) (SQLExecDirectW)") 
[SQL: "\ufeffWITH\n-- Some comment about the query\nQC_SCORE AS 
(\n  SELECT some_table.id\n  , other_table.column\n 

那是不能正确读取文件。经过检查,我发现文件的开头有\ufeff,并且没有翻译换行符\n

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:0)

在尝试解析具有特殊unicode字符的XML文件时,我遇到了类似的问题。我发现可行的解决方法是将文件读取为字符串,然后使用string.replace()方法。这句话:

text_query = r“ \ ufeff +”实际的SQL代码“ text_query = text_query.replace(r'\ ufeff','').replace(r'\ n','')