为什么可以';这段python代码是否在sqlite3中创建临时表?

为什么可以';这段python代码是否在sqlite3中创建临时表?,python,python-3.x,sqlite,temp-tables,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()

我有以下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()

由于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()
导入sqlite3 db_pathname=“db.sqlite3” sqlite\u conn=sqlite3.connect(db\u路径名) sqlite\u cur=sqlite\u conn.cursor() sqlite_cur.execute(“”)
由于CREATE和TABLE之间的临时关键字,在您关闭连接后,CREATE TABLE NEXT_info ASTABLE将不显示

尝试删除它,表将被持久化

像这样的

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()
导入sqlite3 db_pathname=“db.sqlite3” sqlite\u conn=sqlite3.connect(db\u路径名) sqlite\u cur=sqlite\u conn.cursor() sqlite_cur.execute(“”)
创建表最新信息作为如何测试表是否成功创建?关闭连接后将不会保留临时表…我使用了SQLite的软件
DB Browser
。我复制并粘贴了SQL代码并在此软件中运行。我可以看到临时表已成功创建。我不知道临时表将在关闭连接后消失。如何使临时表保持不变?是否创建一个普通表?
创建表最新信息…
?临时表仅用于会话,因此您可以执行连接。正如@Torxed所说,在关闭会话的那一刻,该表将被删除。如何测试是否已成功创建表?关闭连接后将不会保留临时表…我使用了SQLite的软件
DB Browser
。我复制并粘贴了SQL代码,并在该软件中运行它。我可以看到临时表已成功创建。我不知道临时表在关闭连接后将消失连接。我如何使临时表保持?您创建一个普通表?
创建表最新信息…
?临时表仅用于会话,因此您可以执行连接。正如@Torxed所说,在您关闭会话时,该表将被删除。谢谢。如果我希望该表保持连接,则不应使用临时表首先要坚持。我想知道,如果不坚持,为什么人们会想使用临时表。你会碰巧知道吗?我想这可以用作临时结果的持有者,就像你在壳中的位置,然后一个接一个地细化结果。或者在两个复杂的请求之间重新组织数据……老实说,n曾经使用过它。谢谢。我认为它的目的是使用临时表编写可读性更好的sql代码。另一个原因是为了避免嵌套查询以提高性能。谢谢。如果我希望表首先保持不变,我就不应该使用临时表。我想知道,如果临时表不保持不变,为什么人们会希望使用临时表。你会知道吗?我想这可以用作临时结果的持有者,比如你在shell中的位置,然后一个接一个地细化结果。或者用于在两个复杂请求之间重新组织数据…老实说,从来没有使用过它。谢谢。我想其目的是编写sql代码,使用临时表Anoth更具可读性原因是为了避免嵌套查询以提高性能。