Web2py:写 SQL 查询:"SELECT x FROM y" 使用 DAL,当 x 和 y 是变量时,并将结果转换为列表?
Web2py: Write SQL query: "SELECT x FROM y" using DAL, when x and y are variables, and convert the results to a list?
我的操作将 table y
中的列 x
中的值列表传递给视图。我如何写下面的SQL:SELECT x FROM y
,使用DAL "language",当x
和y
是视图给出的变量时。在这里,使用 exequtesql()
.
def myAction():
x = request.args(0, cast=str)
y = request.args(1, cast=str)
myrows = db.executesql('SELECT '+ x + ' FROM '+ y)
#Let's convert it to the list:
mylist = []
for row in myrows:
value = row #this line doesn't work
mylist.append(value)
return (mylist=mylist)
此外,是否有更方便的方法将该数据转换为列表?
首先,请注意,您必须为要访问的任何 table(即 db.define_table('mytable', ...)
)创建 table 定义。假设您已经这样做了,并且 y
是单个 table 的名称,而 x
是 table 中单个字段的名称,您将执行:
myrows = db().select(db[y][x])
mylist = [r[x] for r in myrows]
请注意,如果返回任何记录,.select()
总是会生成一个 Row
对象,该对象包含一组 Row
对象(即使只选择了一个字段)。因此,要将各个值提取到列表中,您必须遍历 Rows
对象并从每个 Row
对象中提取相关字段。上面的代码通过列表理解来实现。
此外,您可能想添加一些代码来检查 db[y]
和 db[y][x]
是否存在。
我的操作将 table y
中的列 x
中的值列表传递给视图。我如何写下面的SQL:SELECT x FROM y
,使用DAL "language",当x
和y
是视图给出的变量时。在这里,使用 exequtesql()
.
def myAction():
x = request.args(0, cast=str)
y = request.args(1, cast=str)
myrows = db.executesql('SELECT '+ x + ' FROM '+ y)
#Let's convert it to the list:
mylist = []
for row in myrows:
value = row #this line doesn't work
mylist.append(value)
return (mylist=mylist)
此外,是否有更方便的方法将该数据转换为列表?
首先,请注意,您必须为要访问的任何 table(即 db.define_table('mytable', ...)
)创建 table 定义。假设您已经这样做了,并且 y
是单个 table 的名称,而 x
是 table 中单个字段的名称,您将执行:
myrows = db().select(db[y][x])
mylist = [r[x] for r in myrows]
请注意,如果返回任何记录,.select()
总是会生成一个 Row
对象,该对象包含一组 Row
对象(即使只选择了一个字段)。因此,要将各个值提取到列表中,您必须遍历 Rows
对象并从每个 Row
对象中提取相关字段。上面的代码通过列表理解来实现。
此外,您可能想添加一些代码来检查 db[y]
和 db[y][x]
是否存在。