Python为什么sqlite3中的这个循环不能正确添加我的数据?

2024-09-30 02:25:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直想用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”列的值应该不同,但是我得到的所有表的值都相同。我不明白为什么,因为我为每个数据输入和更新函数都放置了一个帧编号指示符。你知道吗

编辑:一切正常。我只是没有看到单独查看每张桌子的下拉菜单。我觉得很笨


Tags: andinforexecutedistdefupdateval

热门问题