我有一個將數據存儲在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))
您可以包括插入兩個數字到數據庫的代碼? –