2016-12-11 6 views
0

最後の挿入ID(リレーションとして2番目のテーブルで使用する)を取得したいと思いますが、取得方法はわかりません。私はpeewee ORMを使用しています。peewee ORM(python)の最後の挿入IDを取得

データベース 'nest'の '読み込み'テーブルには、 'id'(int(11)auto_increment、主キー)という列があります。

import time 
from peewee import * 

database = MySQLDatabase('nest', **{'user': 'nest'}) 

class Readings(BaseModel): 
time = DateTimeField() 

class Meta: 
    db_table = 'readings' 

dt = Readings.insert(time=time.strftime("%x %X")) 
dt.execute(); 
print "Last insert id:", dt.last_insert_id(database, Readings); 

最終行は私が立ち往生した場所です。あなたの助けに感謝します。

答えて

1

本当にありがとうございました。本当に簡単でした。ここで正しいコードは次のとおりです。

import time 
from peewee import * 

database = MySQLDatabase('nest', **{'user': 'nest'}) 

class Readings(BaseModel): 
    time = DateTimeField() 

class Meta: 
    db_table = 'readings' 

dt = Readings.insert(time=time.strftime("%x %X")) 
print "Last insert id: %i" % dt.execute() 
0

Pythonにはセミコロンは不要です!

ちょっとメモ... InsertQuery.execute()は実際に最後の挿入IDを返さなければなりません。 last_insert_id()を呼び出す場合は、クエリの実行に使用されたカーソルを渡す必要があります。

+0

どうもありがとう - セミコロンが自動的に来る - 私はちょうどあなたの回答に基づいて正しいコードを掲示します。 – divingTobi

0
You can direct fetch id of that insert record like below 

import time 
from peewee import * 

database = MySQLDatabase('nest', **{'user': 'nest'}) 

class Readings(BaseModel): 
time = DateTimeField() 

class Meta: 
    db_table = 'readings' 

dt = Readings(time=time.strftime("%x %X")) 
dt.save() 

print "Last insert id:"+str(dt.id); 
関連する問題