【问题标题】:python pypyodbc writing to dBase not workingpython pypyodbc 写入 dBase 不起作用
【发布时间】:2015-06-25 23:35:39
【问题描述】:

尝试使其正常工作的时间很糟糕。花了太多时间进行搜索,却发现同样的例子没有帮助。

为自己制作了一个 GUI,它启动一个线程来读取串行端口并将一些 GPS 数据解析为 NMEA 语句。

我获取数据并希望将其写入数据库而不是文本文件,以使其更清晰。但是,当我写入数据库时​​,它会抛出一个错误:

'type' object has no attribute '__getitem__'

由于我在处理数据库和 python 方面的经验为零,所以我不知道哪里出了问题。

我知道它的 cur.execute INSERT 行抛出异常,我只是不知道如何修复它。

有人愿意带我走过吗?我猜这可能是语法?我正在使用 pynmea2 模块进行 GPS 解析,并使用 pypyodbc 模块来制作 MDB 文件。 如果我编写硬编码数据,它可以正常工作。当我使用变量时,它就会出错。

                        try:
                            print ("Attempt to Execute...")
                            Ndx=ID;Tod=str(gps_msg.timestamp);Lat=str(gps_msg.latitude);Lon=str(gps_msg.longitude);TmpLat='0';TmpLon='0';Alt=str(gps_msg.altitude);Flags='0';SystemID=str(gps_msg.ref_station_id);NumSat=str(gps_msg.num_sats);dop='0';Ch1_RSSI=str(rssi_dB)
                            cur.execute("INSERT INTO LogFile(Ndx,Tod,Lat,Lon,TmpLat,TmpLon,Alt,Flags,SystemID,NumSat,dop,Ch1_RSSI) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)",([Ndx],[Tod],[Lat],[Lon],[TmpLat],[TmpLon],[Alt],[Flags],[SystemID],[NumSat],[dop],[Ch1_RSSI]))
                            print ("Attempting to commit...")                            
                            conn.commit()
                            print ("Commit succeeded..")


                           ID = ID + 1


                        except Exception as e:
                           errorLog.writelines('File Write Failure: {0}'.format(e)+"\n")

【问题讨论】:

    标签: python database pypyodbc


    【解决方案1】:

    您试图将参数值作为一个元组传递,其元素是单项列表。那是行不通的。参数必须作为单个值或对象的列表(或元组)传递。

    所以,而不是通过

    ([Ndx],[Tod],[Lat], ... )
    

    你应该过去了

    [Ndx,Tod,Lat, ... ]
    

    作为.execute() 方法的第二个参数。

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多