dan04의 답변에 추가로 a로 NUMERIC
표시되는 0이 아닌 다른 것을 맹목적으로 삽입하려는 경우 TEXT
텍스트 를 숫자 로 변환 할 수 있는지 확인하십시오 .
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
일반적인 사용 사례는 모든 데이터를 텍스트로 처리하는 프로그램의 쿼리에 있습니다 (SQLite는 이미 그렇게하고 있으므로 균일 성과 단순성을 위해). 이것에 대한 좋은 점은 다음과 같은 구조를 허용한다는 것입니다.
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
0이 아닌 숫자 필드를 특별히 처리 할 필요가 없기 때문에 자리 표시자를 사용하는 경우 편리합니다. Python sqlite3
모듈을 사용하는 예 는 다음과 같습니다.
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
위의 예에서의 모든 값은 str_value_tuple
SQlite에 전달 될 때 이스케이프되고 문자열로 인용됩니다. 그러나 우리는 명시 적으로 유형을 확인하지 않고 type 로의 변환TYPEOF
만 확인 하기 때문에 원하는대로 작동합니다 (즉, SQLite는 숫자로 저장하거나 그렇지 않으면 실패합니다).