Почему этот код Python не может создать временную таблицу в sqlite3? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующий код Python для создания временной таблицы в базе данных sqlite3.Я проверил, что SQL-код работает нормально, запустив код в «DB Browser Sqlite».Однако по какой-то причине код 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 голосов
/ 16 октября 2018

Таблица исчезает после закрытия соединения из-за временного ключевого слова между create и таблицей.

Попробуйте удалить его, и таблица будет сохранена.

Примерно так

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()
...