.transform(pk=None) to create rowid table

This commit is contained in:
Simon Willison 2020-09-21 20:39:05 -07:00
commit 95bfe1c77c
2 changed files with 13 additions and 6 deletions

View file

@ -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

View file

@ -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):