如何在 Odoo 中使用游标?
How to use cursors in Odoo?
我不明白在版本 9 中使用光标!你需要光标吗?
在下面的示例中,在控制台行中调用函数后得到:
<openerp.sql_db.Cursor object at 0x7f94f4c0b0d0>
@api.multi
def my_func(self):
cursor = self.env.cr
print(cursor)
什么时候以及为什么使用光标的任何简单示例?
您可以使用 cr 在您的函数中执行查询。
@api.multi
def my_func(self):
cursor = self.env.cr
cursor.execute("select * from res_partner")
for partner in cursor.fetchall():
......
......
基本上游标对象是 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.
无法获得的数据,您可以使用它
我不明白在版本 9 中使用光标!你需要光标吗?
在下面的示例中,在控制台行中调用函数后得到:
<openerp.sql_db.Cursor object at 0x7f94f4c0b0d0>
@api.multi
def my_func(self):
cursor = self.env.cr
print(cursor)
什么时候以及为什么使用光标的任何简单示例?
您可以使用 cr 在您的函数中执行查询。
@api.multi
def my_func(self):
cursor = self.env.cr
cursor.execute("select * from res_partner")
for partner in cursor.fetchall():
......
......
基本上游标对象是 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.
无法获得的数据,您可以使用它