我的操作会将表x
中的列y
中的值列表传递给视图。当SELECT x FROM y
和x
是视图给出的变量时,如何使用DAL“language”编写以下SQL: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)
此外,是否有更方便的方法将数据转换为列表?
答案 0 :(得分:0)
首先,请注意您必须为要访问的任何表创建表定义(即db.define_table('mytable', ...)
)。假设你已经这样做了y
是单个表的名称而x
是该表中单个字段的名称,你可以这样做:
myrows = db().select(db[y][x])
mylist = [r[x] for r in myrows]
注意,如果返回任何记录,.select()
始终会生成一个Row
对象,该对象包含一组Row
个对象(即使只选择了一个字段)。因此,要将单个值提取到列表中,您必须遍历Rows
对象并从每个Row
对象中提取相关字段。上面的代码通过列表理解来实现。
此外,您可能需要添加一些代码来检查db[y]
和db[y][x]
是否存在。