在pyodbc中查询返回错误,但在SSMS中不返回

时间:2019-01-17 06:45:56

标签: python sql sql-server pyodbc

我最近一直在使用python, 并尝试使用以下代码从我的sql server数据库中的几个表连接数据:

query = textwrap.dedent('''SELECT
                     A.成形日, B.ライン, B.鋳込み回数, C.型番To AS 型番, A.組名 AS 組,
                     F.サービスタンク, F.泥温, F.比重, F.流れ, F.一分値, F.五分値, F.揺変性, F.加温巡回,
                     F.珪曹添加量,
                     C.品番, C.型使用回数, C.肉厚,C.内面硬度,C.外面硬度,C.脱型硬度,C.裏硬度,C.反転硬度,
                     B.鋳込み開始時刻,B.着肉時間,B.排泥時間,B.封入時間
                 FROM
                     IOT_T_SeikeiDailyReport AS A
                 INNER JOIN
                     IOT_T_SeikeiDailyReport_Line_Detail AS B
                 ON
                     (A.成形日 = B.成形日
                     AND    A.組名 = B.組名)
                 INNER JOIN 
                     IOT_T_SeikeiDailyReport_PartNo_Detail AS C
                 ON
                     (A.組名 = C.組名
                     AND    A.成形日 = C.成形日
                     AND    B.ライン = C.ライン
                     AND B.鋳込み回数 = C.鋳込み回数)
                 LEFT JOIN
                     IOT_T_SeikeiDailyReport_MoldingDefect AS D
                 ON
                     (A.組名 = D.kumi
                     AND    A.成形日 = D.molding_date
                     AND    B.ライン = D.line
                     AND    B.鋳込み回数 = D.ikomi
                     AND    C.型番To = D.kataban)
                 LEFT JOIN
                     IOT_M_KumiLineTank AS E
                 ON
                     (A.組名 = E.組
                     AND    B.ライン = E.ライン)
                 INNER JOIN
                     IOT_T_ServiceTank AS F
                 ON
                    ( A.成形日 = F.測定日
                 AND    E.タンク = F.サービスタンク)''')

    result = cursor.execute(query).fetchall()

并返回错误:

  

“「”附近的语法无效

我认为我的代码上存在语法错误,因此我复制了“ query”变量结果并直接在sql management studio上运行,但返回的结果没有任何错误。

1 个答案:

答案 0 :(得分:0)

问题是我查询的日语字符。 我曾尝试先在utf-8上对它进行编码,然后再执行查询,但这没有用。

因此,我创建了一个视图,并将所有表的列名从日语更改为普通字母,并且可以正常工作。 我还尝试使用pymssql代替pyodbc,即使我的表列是日语,也没有出现此问题。

谢谢。