为什么这个 python 代码不能在 sqlite3 中创建临时 table?
Why can't this python code create temporary table in sqlite3?
我有以下 python 代码在 sqlite3 数据库中创建临时 table。我已经通过 运行 "DB Browser Sqlite" 中的代码测试了 sql 代码工作正常。但是,由于某种原因,python 代码没有成功创建临时 table。代码有什么问题?
我正在使用 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 在您关闭连接后消失了。
尝试删除它,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()
我有以下 python 代码在 sqlite3 数据库中创建临时 table。我已经通过 运行 "DB Browser Sqlite" 中的代码测试了 sql 代码工作正常。但是,由于某种原因,python 代码没有成功创建临时 table。代码有什么问题?
我正在使用 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()
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()