如何使用表的变量名读取sqlite3数据库表行值

时间:2019-08-06 10:58:26

标签: python sqlite

我使用变量名创建了一个sqlite3表,我还插入了一些值,我想使用表的变量名读取表的行值。

创建了一个表格,如下所示.....成功 表名通过kivy gui传递。

def exams_table(name):    
    x_table = '''CREATE TABLE {}(
        user_id INTEGER PRIMARY KEY,
        account VARCHAR(20) NOT NULL,
        l_name VARCHAR(20) NOT NULL,
        f_name VARCHAR(20) NOT NULL,
        class VARCHAR(20) NOT NULL,
        term VARCHAR(20) NOT NULL,
        exam VARCHAR(20) NOT NULL,
        math REAL(20) NOT NULL,
        eng REAL(20) NOT NULL,
        comp REAL(20) NOT NULL,
        eng_t REAL(20) NOT NULL,
        kis REAL(20) NOT NULL,
        ins REAL(20) NOT NULL,
        kis_t REAL(20) NOT NULL,
        sst REAL(20) NOT NULL,
        r_edu REAL(20) NOT NULL,
        s_r_total REAL(20) NOT NULL,
        science REAL(20) NOT NULL,
        creative REAL(20) NOT NULL,
        e_read REAL(20) NOT NULL,
        s_read REAL(20) NOT NULL,
        total_m REAL(20) NOT NULL,
        mean_s REAL(20) NOT NULL,
        pos INTEGER(20) NOT NULL,
        total_p INTEGER(20) NOT NULL);'''.format(name)
    cursor.execute(x_table)

成功插入如下所示的值...

cursor.execute('INSERT INTO %s(user_id, account, l_name, f_name, class, '
                        'term, exam, math, eng, comp, eng_t, kis, ins, kis_t, sst, r_edu, s_r_total, science, creative,'
                        'e_read, s_read, total_m, mean_s, pos, total_p)VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,'
                        '?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' % xam_table_name,
                        (self.pupil_number.text, c[0], c[1], c[2], self.exam_term.text, self.exam_type.text, self.math.text,
                        self.eng.text, self.eng_com.text, self.english_total(), self.kis.text, self.kis_com.text, self.swahili_total(), self.sst.text,
                        self.re.text, self.sst_re_total(), self.sci.text, self.crt.text, self.reading.text, self.s_reading.text,
                        self.total.text, self.mean.text, '', ''))
                        conn.commit()

现在我要起诉这些值,我正在阅读如下所示的

cursor.execute('select * from %s' % xam_table_name)
        f = cursor.fetchall()
        print(f)

然后我得到下面的错误

cursor.execute('select * from %s' % xam_table_name)
 sqlite3.OperationalError: near " ": syntax error

我需要使用这些值来生成pdf报告。....请帮助,谢谢

1 个答案:

答案 0 :(得分:1)

很难阅读代码,但是我的猜测是,当您执行select时,变量xam_table_name并不包含您认为的内容。在print(xam_table_name)行上方放置cursor.execute(...)行,以仔细检查xam_table_name包含您当时认为的功能。