Como um complemento à resposta de dan04, se você deseja inserir cegamente um NUMERIC
diferente de zero representado por um, TEXT
mas certifique-se de que o texto seja conversível em um numérico:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
O caso de uso típico é em uma consulta de um programa que trata todos os dados como texto (para uniformidade e simplicidade, uma vez que o SQLite já faz isso). O bom disso é que permite construções como esta:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
o que é conveniente no caso de você estar usando espaços reservados, porque você não precisa lidar com esses campos numéricos diferentes de zero especialmente. Um exemplo de uso do sqlite3
módulo Python seria,
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
No exemplo acima, todos os valores em str_value_tuple
terão escape e serão colocados entre aspas como strings quando passados para SQlite. No entanto, como não estamos verificando explicitamente o tipo via, TYPEOF
mas apenas a conversibilidade para o tipo , ele ainda funcionará como desejado (ou seja, o SQLite irá armazená-lo como um numérico ou falhará caso contrário).