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



我使用变量名创建了一个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 报告.....请帮忙,谢谢

很难阅读你的代码,但我的猜测是,当你做select时,你的变量xam_table_name不包含你认为它包含的内容。在cursor.execute(...)线上方放置一条print(xam_table_name)线,以仔细检查xam_table_name是否包含您当时认为它的作用。

最新更新