如何使用python将整个列(包括数据类型)从sqlite表复制到另一个表?

如何使用python将整个列(包括数据类型)从sqlite表复制到另一个表?,python,sqlite,Python,Sqlite,我正试图编写一个函数来删除sqlite中的列(因为有时我可能想删除太旧的列)。来自: SQLite对ALTER表的支持有限 可用于将列添加到 表的结尾或更改 表的名称。如果你想 结构上更复杂的变化 对于一个表,您必须重新创建 桌子。您可以保存现有数据 把旧桌子扔到临时桌上 表,创建新表,然后复制 从临时数据库返回的数据 桌子 例如,假设您有一张桌子 命名为“t1”,列名称为“a”, “b”和“c”以及你想要的 从该表中删除列“c”。这个 以下步骤说明了这一点 可以做到: BEGIN TR

我正试图编写一个函数来删除sqlite中的列(因为有时我可能想删除太旧的列)。

来自:

SQLite对ALTER表的支持有限 可用于将列添加到 表的结尾或更改 表的名称。如果你想 结构上更复杂的变化 对于一个表,您必须重新创建 桌子。您可以保存现有数据 把旧桌子扔到临时桌上 表,创建新表,然后复制 从临时数据库返回的数据 桌子

例如,假设您有一张桌子 命名为“t1”,列名称为“a”, “b”和“c”以及你想要的 从该表中删除列“c”。这个 以下步骤说明了这一点 可以做到:

    BEGIN TRANSACTION;
    CREATE TEMPORARY TABLE t1_backup(a,b);
    INSERT INTO t1_backup SELECT a,b FROM t1;
    DROP TABLE t1;
    CREATE TABLE t1(a,b);
    INSERT INTO t1 SELECT a,b FROM t1_backup;
    DROP TABLE t1_backup;
    COMMIT;

另一个表在同一个数据库中,还是另一个表?不清楚您的模式是什么,但如果您必须定期删除“太旧”列,您可能需要重新考虑您的模式设计。@Keith:我不知道OP在做什么,但这方面的一个常见用例是升级应用程序。当模式在不同版本之间发生更改时,新版本需要有一个代码来适当地更改表。如果要重命名旧表,只需复制一次数据,并删除旧表,将更容易
alter TABLE
。不过,双拷贝可能会使数据库更加紧凑。