我有一个将数据存储在sqlite数据库中的prog。在db中的其他表中,我创建了如下一个:SQlite将某些内容保存为Sci Notation
conn.execute("CREATE TABLE {tn} ({cn} {ct})".format(tn=test, cn="STEP_NAME", ct="TEXT"))
其中,表创建了几个列。一个是:
conn.execute("ALTER TABLE {tn} ADD COLUMN '{cn}' {ct} ".format(tn=test, cn=value, ct="TEXT"))
我试图保存数据到它,但它的行为方式我无法解释。当我将270113185308874890保存到它时,它在调用时显示为270113185308874890。但是,当我将89014103258771944209保存到它时,它会保存为8.90141032588e + 19。
我该如何预防?我尝试过不同的列类型,但没有运气,真的不明白为什么它将其转换。
编辑:我使用来存放它
def store_result(conn, table_name, row_name, data):
for k, v in data.iteritems():
if isinstance(v, str):
data[k] = v.replace('"', "'").rstrip(' \t\r\n\0')
keys = data.keys()
vals = data.values()
# add test name column for everything but info call
if table_name != "info":
keys.insert(0, "STEP_NAME")
vals.insert(0, str(row_name))
# Make pretty for sqlite3 and its crazy param rules.
sql_keys = ','.join(str(v) for v in keys)
sql_vals = ','.join(str(v) for v in [x if str.isdigit(str(x)) else '"{}"'.format(x) for x in vals])
# try to write or tell me why not.
try:
conn.execute("""INSERT into {table}({sql_keys}) values ({vals})""".format(table=table_name,
sql_keys=sql_keys,
vals=sql_vals))
conn.commit()
except Exception as e:
logging.warn("DB ERROR:{}_{}_{}".format(e, table_name, row_name))
您可以包括插入两个数字到数据库的代码? –