2.13. SQL文の生成¶
SQL文を発行する次のメソッドは、メソッド名の直前にアンダーバ(_)を付けると、メソッドは実行せずSQL文字列を 生成します。
各メッソドに対応した SQL文字列を生成して返す、アンダーバが付いたメソッドが別に用意されています。
>>> db.person._insert(name='xxxxx')
"INSERT INTO person(name) VALUES ('xxxxx');"
>>> db(db.person)._select()
'SELECT person.id, person.name FROM person WHERE (person.id > 0);'
>>> db(db.person)._count()
'SELECT count(*) FROM person WHERE (person.id > 0)'
>>> db(db.person.id == 1)._update(name='xxxxx')
"UPDATE person SET name='xxxxx' WHERE (person.id = 1);"
>>> db(db.person.name == 'xxxxx')._delete()
"DELETE FROM person WHERE (person.name = 'xxxxx');"
>>> db.person._truncate()
['DELETE FROM person;', "DELETE FROM sqlite_sequence WHERE name='person';"]
>>> db.person._drop()
['DROP TABLE person;']
なお最後に発行したSQL文を保存する属性もあります。これについては DAL._lastsql
を参照ください。
参考: Generating raw SQL | 生SQLの生成