Python 为什么将形式为###########的字符串插入sqlite数据库时会转换为float?

Python 为什么将形式为###########的字符串插入sqlite数据库时会转换为float?,python,database,sqlite,Python,Database,Sqlite,在使用sqlite数据库和python时,我面临以下问题。 这种情况也会发生在外部程序(如SQLiteStudio)中,因此它不是python。 假设有一个包含字符串类型列的表。 如果您在该列中输入一个条目,例如43234e4324(因此,所有类型的条目##################give the issue),则存储在数据库中的值将转换为inf! 当然,由于e可能被解释为指数,因此如果列是float类型,那么它是有意义的,但它是string 以下是一个工作示例: import sqli

在使用sqlite数据库和python时,我面临以下问题。 这种情况也会发生在外部程序(如SQLiteStudio)中,因此它不是python。 假设有一个包含字符串类型列的表。 如果您在该列中输入一个条目,例如43234e4324(因此,所有类型的条目##################give the issue),则存储在数据库中的值将转换为inf! 当然,由于e可能被解释为指数,因此如果列是float类型,那么它是有意义的,但它是string

以下是一个工作示例:

import sqlite3
a = sqlite3.connect('test.sqlite')
a.execute('CREATE TABLE test (p STRING)')
a.execute('INSERT INTO test (p) VALUES (03242e4444)')
a.commit()
b = a.execute('SELECT p FROM test')
b.fetchall()
你会得到[(inf,)]。。。 如果插入不带“e”的其他值,则会得到正确的字符串


我想输入一个类似于43243e3423的字符串,而不进行转换。我怎样才能做到这一点呢?

一个带有
e
的数字是一个浮点数
43234e3423
是43234x103423的符号。由于它太大,无法存储为浮点数,因此会得到
inf

要输入字符串,您应该将它们放在引号中

a.execute('INSERT INTO test (p) VALUES ("03242e4444")')
另一个问题是没有
STRING
数据类型。无法识别的数据类型被视为
数值
,因此即使在值周围加上引号,也会将其转换为数字。使用
文本

a.execute('CREATE TABLE test (p TEXT)')

带有
e
的数字是中的浮点数
43234e3423
是43234x103423的符号。由于它太大,无法存储为浮点数,因此会得到
inf

要输入字符串,您应该将它们放在引号中

a.execute('INSERT INTO test (p) VALUES ("03242e4444")')
另一个问题是没有
STRING
数据类型。无法识别的数据类型被视为
数值
,因此即使在值周围加上引号,也会将其转换为数字。使用
文本

a.execute('CREATE TABLE test (p TEXT)')

如果它应该是一个字符串,请将其放在引号中。请参阅,我已尝试使用a.execute('INSERT-INTO-test(p)VALUES(\'03242e4444\')),但仍然得到相同的错误!如果它应该是一个字符串,请将其放在引号中。请参阅,我已尝试使用a.execute('INSERT-INTO-test(p)VALUES(\'03242e4444\')),但仍然得到相同的错误!我已经更新了答案。另一个问题是
字符串
数据类型。您应该接受答案以表明它解决了问题。我已经更新了答案。另一个问题是
字符串
数据类型。您应该接受答案以表明它解决了问题。