2013-03-13 2 views
0

Я работаю с проектом и начал небольшой проект, чтобы получить некоторые данные по Serial. Данные поступают через Serial, но в базу данных ничего не добавляется. Таблицы создаются, но не фактические данные нажимаются. Там что-то не так.Ввод данных в SQLite

Вот мой код:

#!/usr/bin/env python 
import serial 
import time 

import sqlite3 
import os 
from datetime import datetime 

conn = sqlite3.connect("elements78.db") # or use :memory: to put it in RAM 

cursor = conn.cursor() 
sql_file = os.path.join(os.path.dirname(__file__), 'elements78.db') 
needs_creation = not os.path.exists(sql_file) 
db_connection = sqlite3.connect(sql_file) 
db_connection.row_factory = sqlite3.Row 

# create a table 
if needs_creation: 
    print 'Creating initial database...' 
    cursor = db_connection.cursor() 

    db_connection.commit() 
    print 'Database created.' 

cursor.executescript(""" 
        DROP TABLE IF EXISTS elements; 
        CREATE TABLE elements (id INTEGER PRIMARY KEY AUTOINCREMENT, Name, date CURDATE) 
        """) 

#enter your device file 
arddev = '/dev/tty.usbmodem621' 
baud = 9600 

#setup - if a Serial object can't be created, a SerialException will be raised. 
while True: 
    try: 
     ser = serial.Serial(arddev, baud) 

     #break out of while loop when connection is made 
     break 
    except serial.SerialException: 
     print 'waiting for device ' + arddev + ' to be available' 
     time.sleep(3) 

#read lines from serial device 
count = 0 
while count < 5: 

    element = ser.readline().strip('\n') 
    count = count + 1 
    datestamp = datetime.now() 
    print 'received the element: ' + element 
    print datestamp 

    cursor.execute('insert into elements(Name) values("%s")'%(element)) 


allentries = [] 
cursor.execute('SELECT * FROM elements') 

allentries=cursor.fetchall() 

print allentries 
+0

возможно, что может дать вам некоторые рекомендации http://zetcode.com/db/sqlitepythontutorial/ – Mingebag

+1

* Я действительно очень * совет использовать 'sqlalchemy' пакет –

+0

Хороший совет от Jakub М, SQLAlchemy сделает вашу жизнь намного проще в этой ситуации, и это тоже ORM! – theBigChalk

ответ

5

Попробуйте добавить

db_connection.commit() 

после операторов INSERT.