python pypyodbc写入dBase无法正常工作

时间:2015-06-25 23:35:40

标签: python database pypyodbc

有一段可怕的时间试图让这个工作。花了太多时间进行搜索只是为了得出相同的例子而没有帮助。

让自己成为一个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")

1 个答案:

答案 0 :(得分:1)

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

所以,而不是传递

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

你应该通过

[Ndx,Tod,Lat, ... ]

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