Я вставляю данные в sqlite3 с помощью скрипта python. Но моя проблема заключается в том, что скрипт вставляет три дубликаты (одни и те же) данные. Просто вставлять одинаковые данные три раза.Как предотвратить множественные записи (Дублировать) в SQLite3 с помощью Python
print flag
if flag == 1:
print colored('Authorized', 'green')
pi1.write(6, 0)
conn1 = sqlite3.connect('db/local.db')
c = conn1.cursor()
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
c.execute("INSERT INTO lock_logs (msg,created_at,card,date,host_ip,door_name,state) VALUES ('Authorized card','"+date+"', "+reader_value+", '"+date+"', '"+get_ip_address('eth0')+"', 'NL_1','opened')")
conn1.commit()
conn1.close()
time.sleep(3)
pi1.write(6, 1)
print "inserted"
#cron will send log to server
else:
print colored('Not Authorized', 'red')
pi1.write(6, 1)
#store log to local sqllight file
#conn = sqlite3.connect('db/local.db')
conn2 = sqlite3.connect('db/local.db')
c = conn2.cursor()
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
c.execute("INSERT INTO lock_logs (msg,created_at,card,date,host_ip,door_name,state) VALUES ('Not Authorized card','"+date+"', "+reader_value+", '"+date+"', '"+get_ip_address('eth0')+"', 'NL_1','failed')")
conn2.commit()
conn2.close()
#cron will send log to server
print "_____________________________________"
Примечание: Если раздел и еще раздел выполнить только один раз, а три записи вставляется вместо вставки только один.
Примеры данных в файл базы данных (local.db)
545|2017-01-28 20:35:44||Authorized card|43448981|2017-01-28 20:35:44|172.20.100.15|NL_1|opened|0
546|2017-01-28 20:35:44||Authorized card|43448981|2017-01-28 20:35:44|172.20.100.15|NL_1|opened|0
547|2017-01-28 20:35:44||Authorized card|43448981|2017-01-28 20:35:44|172.20.100.15|NL_1|opened|0
Как предотвратить это автоматический многократный въезд?
Это должно помочь вам: http://stackoverflow.com/questions/19337029/insert-if-not-exists-statement-in-sqlite – McBarby
Нет, это помогло мне в решении проблемы – webDev