Я имел в виду создать одну базу данных с несколькими таблицами, используя sqlite3, где каждая таблица содержит различный набор данных, но все содержат одинаковые метки столбцов и одинаковое количество строк.
У меня есть этот код:
conn = sqlite3.connect('qlsitheta16.db')
c = conn.cursor()
def create_table(n):
c.execute('CREATE TABLE IF NOT EXISTS qlttable_%s(oxygen INTEGER, distance REAL, q REAL, lsi REAL, \
theta TEXT)'%n)
def data_entry(n,oxy,dist,q_val,lsi_val,t_val):
c.execute("INSERT INTO qlttable_%s VALUES(?,?,?,?,?)"%n,[oxy,dist,q_val,lsi_val,t_val])
def del_and_update(n,min_dist,oxy):
c.execute('SELECT * FROM qlttable_%s'%n)
c.execute("UPDATE qlttable_%s SET distance = ? WHERE oxygen= ?"%n,[min_dist,oxy])
def del_and_update_q(n,q,oxy):
c.execute('SELECT * FROM qlttable_%s'%n)
c.execute("UPDATE qlttable_%s SET q = ? WHERE oxygen= ?"%n,[q,oxy])
def del_and_update_lsi(n,lsi,oxy):
c.execute('SELECT * FROM qlttable_%s'%n)
c.execute("UPDATE qlttable_%s SET lsi = ? WHERE oxygen= ?"%n,[lsi,oxy])
with open(inputfile, 'rb') as f:
for frame in range(fr+1):
create_table(frame)
#...bunch of stuff...
for n in range(len(solvent)):
data_entry(frame,n,0,0,0,0)
distances = []
for i in range(len(refpts)):
do stuff to fill up distances
del_and_update(frame,min(distances),n)
for n in water_index:
#do stuff
if len(set_temp)>2:
del_and_update_q(frame,function1(set_temp),n)
for n in water_index:
#do stuff
if len(set_temp)>2:
del_and_update_lsi(frame,function2(set_temp),n)
conn.commit()
Весь мой код состоит из 355 строк, поэтому я упустил много информации.
Для каждого кадра должна быть отдельная таблица (DONE), и каждый кадр должен иметь разные значения столбца «distance», но вместо этого я получаю одинаковые значения для всех таблиц. Я не могу понять почему, потому что я поставил индикатор номера кадра для каждой функции ввода данных и обновления.
РЕДАКТИРОВАТЬ: Все отлично работает. Я просто не видел выпадающего меню для просмотра каждой таблицы отдельно. Я чувствую себя глупым