.. meta:: :keywords: web2py, framework, DAL, データベース抽象化レイヤ, SQL文生成 .. _generate_sql_statements: SQL文の生成 =========== SQL文を発行する次のメソッドは、メソッド名の直前にアンダーバ(_)を付けると、メソッドは実行せずSQL文字列を 生成します。 * :meth:`~dal.Table.insert` * :meth:`~dal.Set.select` * :meth:`~dal.Set.count` * :meth:`~dal.Set.update` * :meth:`~dal.Set.delete` * :meth:`~dal.Table.drop` * :meth:`~dal.Table.truncate` 各メッソドに対応した 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文を保存する属性もあります。これについては :attr:`DAL._lastsql` を参照ください。 参考: `Generating raw SQL `_ | `生SQLの生成 `_