mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 09:24:31 +02:00
Merge 05b5f0fe26 into a947dc6739
This commit is contained in:
commit
de6a4a2e9d
2 changed files with 25 additions and 0 deletions
|
|
@ -1400,6 +1400,7 @@ class Database:
|
|||
extracts: Optional[Union[Dict[str, str], List[str]]] = None,
|
||||
if_not_exists: bool = False,
|
||||
strict: bool = False,
|
||||
autoincrement: bool = False,
|
||||
) -> str:
|
||||
"""
|
||||
Returns the SQL ``CREATE TABLE`` statement for creating the specified table.
|
||||
|
|
@ -1496,6 +1497,8 @@ class Database:
|
|||
column_extras = []
|
||||
if column_name == single_pk:
|
||||
column_extras.append("PRIMARY KEY")
|
||||
if autoincrement:
|
||||
column_extras.append("AUTOINCREMENT")
|
||||
if column_name in not_null:
|
||||
column_extras.append("NOT NULL")
|
||||
if column_name in defaults and defaults[column_name] is not None:
|
||||
|
|
@ -2842,6 +2845,8 @@ class Table(Queryable):
|
|||
if column_order is not None:
|
||||
column_order = [rename.get(col) or col for col in column_order]
|
||||
|
||||
has_autoincrement = "autoincrement" in self.schema.lower()
|
||||
|
||||
sqls = []
|
||||
sqls.append(
|
||||
self.db.create_table_sql(
|
||||
|
|
@ -2853,6 +2858,7 @@ class Table(Queryable):
|
|||
foreign_keys=create_table_foreign_keys,
|
||||
column_order=column_order,
|
||||
strict=self.strict if strict is None else strict,
|
||||
autoincrement=has_autoincrement,
|
||||
).strip()
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -880,6 +880,25 @@ def test_transform_with_indexes_errors(fresh_db, transform_params):
|
|||
)
|
||||
|
||||
|
||||
def test_transform_preserves_autoincrement(fresh_db):
|
||||
fresh_db.execute(
|
||||
"CREATE TABLE t (id INTEGER PRIMARY KEY AUTOINCREMENT, val TEXT)"
|
||||
)
|
||||
fresh_db["t"].insert({"val": "one"})
|
||||
fresh_db["t"].insert({"val": "two"})
|
||||
fresh_db["t"].transform(rename={"val": "value"})
|
||||
assert "AUTOINCREMENT" in fresh_db["t"].schema
|
||||
# Confirm the column is still the primary key
|
||||
assert fresh_db["t"].pks == ["id"]
|
||||
|
||||
|
||||
def test_transform_without_autoincrement_not_affected(fresh_db):
|
||||
fresh_db.execute("CREATE TABLE t (id INTEGER PRIMARY KEY, val TEXT)")
|
||||
fresh_db["t"].insert({"val": "one"})
|
||||
fresh_db["t"].transform(rename={"val": "value"})
|
||||
assert "AUTOINCREMENT" not in fresh_db["t"].schema
|
||||
|
||||
|
||||
def test_transform_with_unique_constraint_implicit_index(fresh_db):
|
||||
dogs = fresh_db["dogs"]
|
||||
# Create a table with a UNIQUE constraint on 'name', which creates an implicit index
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue