为什么此python代码无法在sqlite3中创建临时表?

时间:2018-10-16 07:34:09

标签: python python-3.x sqlite temp-tables

我有以下python代码在sqlite3数据库中创建临时表。我已经通过运行“ DB Browser Sqlite”中的代码测试了sql代码是否可以正常工作。但是,由于某种原因,python代码无法成功创建临时表。代码有什么问题?

我正在使用python v3.6

import sqlite3

db_pathname = "db.sqlite3"
sqlite_conn = sqlite3.connect(db_pathname)
sqlite_cur = sqlite_conn.cursor()

sqlite_cur.execute('''
                    CREATE TEMPORARY TABLE latest_info AS 
                    SELECT * from infos t                    
                    WHERE
                    t.date_p =
                    (SELECT MAX(date_p) from infos t1                    
                    WHERE t1.info_id = t.info_id
                    )
                   '''
                   )

sqlite_conn.commit()
sqlite_conn.close()

1 个答案:

答案 0 :(得分:2)

由于create和table之间的临时关键字,在关闭连接后,Table消失了。

尝试删除它,该表将保留。

类似这样的东西

import sqlite3

db_pathname = "db.sqlite3"
sqlite_conn = sqlite3.connect(db_pathname)
sqlite_cur = sqlite_conn.cursor()

sqlite_cur.execute('''
                CREATE TABLE latest_info AS <-- there, no more TEMPORARY
                SELECT * from infos t                    
                WHERE
                t.date_p =
                (SELECT MAX(date_p) from infos t1                    
                WHERE t1.info_id = t.info_id
                )
               '''
               )

sqlite_conn.commit()
sqlite_conn.close()