From 95bfe1c77c043f03da9ce102e7d44c1cd0207d00 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 21 Sep 2020 20:39:05 -0700 Subject: [PATCH] .transform(pk=None) to create rowid table --- sqlite_utils/db.py | 9 +++------ tests/test_transform.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 5e66454..02b55ec 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -721,7 +721,7 @@ class Table(Queryable): columns=None, rename=None, drop=None, - pk=None, + pk=DEFAULT, not_null=None, defaults=None, drop_foreign_keys=None, @@ -746,7 +746,7 @@ class Table(Queryable): columns=None, rename=None, drop=None, - pk=None, + pk=DEFAULT, not_null=None, defaults=None, drop_foreign_keys=None, @@ -771,7 +771,7 @@ class Table(Queryable): copy_from_to[name] = new_name sqls = [] - if pk is None: + if pk is DEFAULT: if len(self.pks) == 1: pk = self.pks[0] else: @@ -820,9 +820,6 @@ class Table(Queryable): not_null=create_table_not_null, defaults=create_table_defaults, foreign_keys=create_table_foreign_keys, - # column_order=column_order, - # hash_id=hash_id, - # extracts=extracts, ).strip() ) # Copy across data, respecting any renamed columns diff --git a/tests/test_transform.py b/tests/test_transform.py index 7abbc8c..2fbaa6b 100644 --- a/tests/test_transform.py +++ b/tests/test_transform.py @@ -75,6 +75,16 @@ import pytest "ALTER TABLE [dogs_new_suffix] RENAME TO [dogs]", ], ), + # Remove primary key, creating a rowid table + ( + {"pk": None}, + [ + "CREATE TABLE [dogs_new_suffix] (\n [id] INTEGER,\n [name] TEXT,\n [age] TEXT\n);", + "INSERT INTO [dogs_new_suffix] ([id], [name], [age]) SELECT [id], [name], [age] FROM [dogs]", + "DROP TABLE [dogs]", + "ALTER TABLE [dogs_new_suffix] RENAME TO [dogs]", + ], + ), ], ) def test_transform_sql(fresh_db, params, expected_sql):