mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-28 21:04:13 +02:00
create-table now supports multiple --pk, refs #620
This commit is contained in:
parent
1dc5da3e5d
commit
23be5be1dc
3 changed files with 13 additions and 3 deletions
|
|
@ -1909,6 +1909,8 @@ This will create a table called ``mytable`` with two columns - an integer ``id``
|
||||||
|
|
||||||
You can pass as many column-name column-type pairs as you like. Valid types are ``integer``, ``text``, ``float`` and ``blob``.
|
You can pass as many column-name column-type pairs as you like. Valid types are ``integer``, ``text``, ``float`` and ``blob``.
|
||||||
|
|
||||||
|
Pass ``--pk`` more than once for a compound primary key that covers multiple columns.
|
||||||
|
|
||||||
You can specify columns that should be NOT NULL using ``--not-null colname``. You can specify default values for columns using ``--default colname defaultvalue``.
|
You can specify columns that should be NOT NULL using ``--not-null colname``. You can specify default values for columns using ``--default colname defaultvalue``.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
|
||||||
|
|
@ -1489,7 +1489,7 @@ def create_database(path, enable_wal, init_spatialite, load_extension):
|
||||||
)
|
)
|
||||||
@click.argument("table")
|
@click.argument("table")
|
||||||
@click.argument("columns", nargs=-1, required=True)
|
@click.argument("columns", nargs=-1, required=True)
|
||||||
@click.option("--pk", help="Column to use as primary key")
|
@click.option("pks", "--pk", help="Column to use as primary key", multiple=True)
|
||||||
@click.option(
|
@click.option(
|
||||||
"--not-null",
|
"--not-null",
|
||||||
multiple=True,
|
multiple=True,
|
||||||
|
|
@ -1532,7 +1532,7 @@ def create_table(
|
||||||
path,
|
path,
|
||||||
table,
|
table,
|
||||||
columns,
|
columns,
|
||||||
pk,
|
pks,
|
||||||
not_null,
|
not_null,
|
||||||
default,
|
default,
|
||||||
fk,
|
fk,
|
||||||
|
|
@ -1581,7 +1581,7 @@ def create_table(
|
||||||
)
|
)
|
||||||
db[table].create(
|
db[table].create(
|
||||||
coltypes,
|
coltypes,
|
||||||
pk=pk,
|
pk=pks[0] if len(pks) == 1 else pks,
|
||||||
not_null=not_null,
|
not_null=not_null,
|
||||||
defaults=dict(default),
|
defaults=dict(default),
|
||||||
foreign_keys=fk,
|
foreign_keys=fk,
|
||||||
|
|
|
||||||
|
|
@ -1180,6 +1180,14 @@ def test_upsert_alter(db_path, tmpdir):
|
||||||
["age", "integer", "--default", "age", "3"],
|
["age", "integer", "--default", "age", "3"],
|
||||||
("CREATE TABLE [t] (\n" " [age] INTEGER DEFAULT '3'\n" ")"),
|
("CREATE TABLE [t] (\n" " [age] INTEGER DEFAULT '3'\n" ")"),
|
||||||
),
|
),
|
||||||
|
# Compound primary key
|
||||||
|
(
|
||||||
|
["category", "text", "name", "text", "--pk", "category", "--pk", "name"],
|
||||||
|
(
|
||||||
|
"CREATE TABLE [t] (\n [category] TEXT,\n [name] TEXT,\n"
|
||||||
|
" PRIMARY KEY ([category], [name])\n)"
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_create_table(args, schema):
|
def test_create_table(args, schema):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue