2013-12-23 40 views
1

使用PostgreSQL 9.3 + PostGIS的Django的,我想輸入一個記錄,我的表並返回給定id像這樣的Django超過PostgreSQL的:使用原始SQL INSERT與返回的不工作

def join(request): 
    from django.db import connection, transaction 
    cursor = connection.cursor() 
    id = cursor.execute("insert into table1 values(DEFAULT, 'temp', null,-4, null,null, null, null, DEFAULT, 1,null,DEFAULT,DEFAULT, null) returning id") 
    transaction.set_dirty() 

    return HttpResponse(id) 

這個說法返回None,我如何得到從sql查詢返回的ID

回答

1
from django.db import connection, transaction 

def join(request): 
    cursor = connection.cursor() 
    id = cursor.execute("insert into table1 values(DEFAULT, 'temp', null,-4, null,null, null, null, DEFAULT, 1,null,DEFAULT,DEFAULT, null)") 
    transaction.set_dirty() 
    last_id = connection.insert_id() 
    return HttpResponse(str(last_id)) 
+0

我收到一個錯誤'全局命名「串」是不是也defined'如果我打印last_id我得到0 –

+0

對此深感抱歉。固定。使用'str' –

+0

str的作品,但我仍然得到0 –

0

什麼是您的數據庫後端?如果您使用的sqlite3,

def join(request): 
    from django.db import connection, transaction 
    cursor = connection.cursor() 
    cursor.execute("insert into table1 values(DEFAULT, 'temp', null,-4, null,null, null, null, DEFAULT, 1,null,DEFAULT,DEFAULT, null)") 
    cursor.execute("SELECT last_insert_rowid() FROM table1") 
    id = cursor.fetchone()[0] 
    transaction.set_dirty() 

    return HttpResponse(id) 
相關問題