2010-05-10 49 views
1

我想使用psycopg2將浮點數綁定到postgresql雙精度。如何使用psycopg2綁定雙精度

ele = 1.0/3.0 
dic = {'name': 'test', 'ele': ele} 
sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele)s)''' 

cur = db.cursor() 
cur.execute(sql, dic) 
db.commit() 

sql = """select elevation from waypoints where name = 'test'""" 
cur.execute(sql_out) 
ele_out = cur.fetchone()[0] 

ele_out 
0.33333333333300003 
ele 
0.33333333333333331 

顯然我不需要精度,但我希望能夠簡單地比較這些值。我可以使用結構模塊並將其保存爲字符串,但認爲應該有更好的方法。由於

回答

0

你得到這個問題的原因是下面的代碼行:

sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele)s)''' 

因爲當浮子被轉換成字符串,在這裏,你沒有得到所有的數字,你」重新期待。例如,

str(ele) 

產生

'0.333333333333' 

更改線路

sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele).17f)''' 

相信會給你你想要的結果,因爲

'%(ele).17f' % dic 

產生

'0.33333333333333331' 
+1

但是你正在做你自己的報價,這是壞的。 – fog 2011-07-22 09:31:37