Pyodbc连接给出奇怪的错误

时间:2018-07-05 15:41:50

标签: python teradata pyodbc

尝试从Python Pyodbc连接到Teradata时出现奇怪的错误。

我使用的代码

import pyodbc
pyodbc.pooling=False
conn=pyodbc.connect('DRIVER={ 
TeradataDriver16.20};DBCNAME=DBCNAME;UID=user_id;
PWD=Password;QUIETMODE=YES;database=databse;')

以上连接成功。 现在,我正在尝试运行以下查询

cursor = conn.cursor()
cursor.execute("SELECT TOP 10 * FROM DB_NAME")
tables = cursor.fetchall()    

这将导致以下错误

Error: ('HY000', '[HY000] 䑛瑡䑡物捥嵴佛䉄⁃楬嵢唠楮潣敤挠湯敶瑲牥戠晵敦\u2072
癯牥汦睯\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00 
\x00\x00\x00\x00\x00\x00(\x00\x00\x00 (0) (SQLExecDirectW)') 

任何解决此问题的指针将不胜感激。

1 个答案:

答案 0 :(得分:0)

我无法使用pyodbc重新创建您的错误。您可以尝试使用Teradata自己的官方软件包“ teradata”,看看是否有类似的行为。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using PX.Data;
using PX.Objects.AR;
using PX.Objects.GL;

namespace SGLCustomizeProject
{
     public class ARPaymentEntryExtension: PXGraphExtension<ARPaymentEntry>
     {
         #region Override Button Menu
         public override void Initialize()
         {
            Base.report.AddMenuAction(ReceiptVoucher);
         }
         #endregion

         #region Button Receipt Vocher 
         public PXAction<ARPayment> ReceiptVoucher;
         [PXButton]
         [PXUIField(DisplayName = "Receipt Voucher")]
         public IEnumerable receiptVoucher(PXAdapter adapter)
         {
             var result = adapter.Get<ARPayment>();
             foreach (ARPayment doc in result)
             {
                 object FinPeriodID;
                 if (Base.Caches[typeof(ARPayment)].GetStatus(doc) == PXEntryStatus.Notchanged)
                 {
                     Base.Caches[typeof(ARPayment)].SetStatus(doc, PXEntryStatus.Updated);
                 }
                 Base.Save.Press();

                 var docPeriod = (FinPeriodID = Base.Caches[typeof(ARPayment)].GetValueExt<ARRegister.finPeriodID>(doc)) is PXFieldState ? (string)((PXFieldState)FinPeriodID).Value : (string)FinPeriodID;
                 Dictionary<string, string> parameters = new Dictionary<string, string>();
                 parameters["ReferenceNbr"] = doc.RefNbr;
                 throw new PXReportRequiredException(parameters, "AR909095", "Report");
            }
            return result;
        }
        #endregion
    }
 }

然后

pip install teradata