Use REAL not FLOAT as SQLite column type, refs #645

This commit is contained in:
Simon Willison 2025-11-23 20:59:02 -08:00
commit 40cb853cba
8 changed files with 36 additions and 31 deletions

View file

@ -44,7 +44,7 @@ from .utils import (
CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"])
VALID_COLUMN_TYPES = ("INTEGER", "TEXT", "FLOAT", "BLOB")
VALID_COLUMN_TYPES = ("INTEGER", "TEXT", "FLOAT", "REAL", "BLOB")
UNICODE_ERROR = """
{}
@ -2425,10 +2425,12 @@ def schema(
"--type",
type=(
str,
click.Choice(["INTEGER", "TEXT", "FLOAT", "BLOB"], case_sensitive=False),
click.Choice(
["INTEGER", "TEXT", "FLOAT", "REAL", "BLOB"], case_sensitive=False
),
),
multiple=True,
help="Change column type to INTEGER, TEXT, FLOAT or BLOB",
help="Change column type to INTEGER, TEXT, FLOAT, REAL or BLOB",
)
@click.option("--drop", type=str, multiple=True, help="Drop this column")
@click.option(

View file

@ -189,7 +189,7 @@ class Default:
DEFAULT = Default()
COLUMN_TYPE_MAPPING = {
float: "FLOAT",
float: "REAL",
int: "INTEGER",
bool: "INTEGER",
str: "TEXT",
@ -203,19 +203,21 @@ COLUMN_TYPE_MAPPING = {
datetime.date: "TEXT",
datetime.time: "TEXT",
datetime.timedelta: "TEXT",
decimal.Decimal: "FLOAT",
decimal.Decimal: "REAL",
None.__class__: "TEXT",
uuid.UUID: "TEXT",
# SQLite explicit types
"TEXT": "TEXT",
"INTEGER": "INTEGER",
"FLOAT": "FLOAT",
"REAL": "REAL",
"BLOB": "BLOB",
"text": "TEXT",
"str": "TEXT",
"integer": "INTEGER",
"int": "INTEGER",
"float": "FLOAT",
"real": "REAL",
"blob": "BLOB",
"bytes": "BLOB",
}
@ -232,9 +234,9 @@ if np:
np.uint16: "INTEGER",
np.uint32: "INTEGER",
np.uint64: "INTEGER",
np.float16: "FLOAT",
np.float32: "FLOAT",
np.float64: "FLOAT",
np.float16: "REAL",
np.float32: "REAL",
np.float64: "REAL",
}
)
except AttributeError: