基本的にカーソルオブジェクトは、Odooがpostgresqlデータベースと通信するために使用するインタフェースです。
Odooでは、通常は直接操作する必要はありませんが、Odoo ORMが目的の結果を得られない場合があります。これは、データベースカーソルを使用する必要があるときです。 ORMを使用して達成できないSQLクエリの場合。
また、データベースのカーソルを使用してセキュリティの制限を克服することもできますが、これはお勧めできません。しかし、私はあなたを裁くことはしません。
Odooのカーソルはデータベースカーソルです。基本的にpsycopg2データベースカーソルです。私はそれがOdooによって変更されていると信じていますが、修正されたものの具体的な例をあなたに教えてくれません。
ここにいくつかの簡単な例を示します。
@api.multi
def sql_example(self):
sql = "SELECT * FROM table_name WHERE col = 'some_value'"
上記のクエリは、変更をコミットしなければならない関数を作成/更新を実行する場合/削除するには、
self.env.cr.execute(sql)
for record in self.env.cr.fetchall():
# YOUR CODE HERE
を好きなことができます。
sql = "UPDATE table_name SET col = 'some_value' WHERE col = 'some_value'"
self.env.cr.execute(sql)
self.env.cr.commit()
場合によっては、キャッシュされたデータがクエリで返されることがあります。これをフラッシュする必要があるかもしれません。
ので
self.env.invalidate_all()
カーソルオブジェクトは、あなたが
Tutorials Pointドキュメントを確認することができますが何であるかをよりよく理解をしたい場合は、Psycopg2 Docs、Postgresql Docs
ボトムライン、カーソルを使用すると、データベースを照会する方法です。あなたはそれを使用する必要はありませんが、ORMを使って入手できないデータを取得する必要がある場合は、利用可能です。
優秀な説明.... Tnx man! –
問題ありません。お力になれて、嬉しいです。 –
非常に良い答えです。 – CZoellner