Python新手,第一次使用SQLite3。
我在网上漫步了如何使用SQLite的基础知识。我正在尝试从当前的CSV存储改进到适当的数据库,这似乎很简单。
我的问题是,当我尝试commit()时,蜘蛛说它的语法无效。 我搜索了一个答案,但似乎大多数人的错误版本略有不同。我仔细检查括号,我认为我有正确的。 有人可以借第二眼,告诉我我错过了什么吗? 下面是一些代码。省略的部分只是串口初始化的东西。如果需要,我也可以发布。
代码的基本思想是它读取GPS冰球并解析NMEA句子,然后将它们存储在数据库中以及我从无线电中提取的RSSI级别。 data_log就是这样我可以看到它被打印在屏幕上以防它崩溃。
def init_file():
filename = raw_input('Enter save file:')
global db
db = sqlite3.connect('RSSI_DATA/'+filename)
init_file()
cursor = db.cursor()
cursor.execute('''
CREATE TABLE users(id INTEGER PRIMARY KEY, TOD BLOB,Lat REAL,Long REAL,Alt REAL,Qual REAL,Ref_ID REAL,Num_Sat REAL,Hor_Dil REAL,RSSI REAL)
''')
db.commit() #write header to db THIS ONE HAS NO ERRORS!!!
while 1:
gps = ser2.readline()
try:
gps_msg = pynmea2.parse(gps)
except:
pass
try:
if gps_msg.sentence_type == 'GGA':
ser1.write("q")
rssi = ser1.readline()
rssi_dB = rssi_convert(float(rssi.strip('\0')))
data_log = str(gps_msg.timestamp) + "," + str(gps_msg.latitude) + "," + str(gps_msg.longitude) + "," + str(gps_msg.altitude) + "," + str(gps_msg.gps_qual) + "," + str(gps_msg.ref_station_id) + "," + str(gps_msg.num_sats) + "," + str(gps_msg.horizontal_dil) + "," + str(rssi_dB) + "\n"
print data_log
cursor.execute('''INSERT INTO users(TOD, Lat, Long , Alt, Qual, Ref_ID, Num_Sat, Hor_Dil, RSSI ) VALUES(?,?,?,?,?,?,?,?,?)''',(gps_msg.timestamp,gps_msg.latitude,gps_msg.longitude,gps_msg.altitude,gps_msg.gps_qual,gps_msg.ref_station_id,gps_msg.num_sats,gps_msg.horizontal_dil,rssi_dB)
db.commit() # THIS GETS AN INVALID SYNTAX ERROR???
except:
pass
答案 0 :(得分:2)
您在前一行缺少右括号:
cursor.execute('''<insert>''',(<params>)
# 1 2 2?