Вставка web2py с таблицей переменных и именем поля, например, с помощью dict - PullRequest
0 голосов
/ 19 сентября 2018

Есть ли способ обработки имени таблицы и имени поля во время выполнения?

Я нашел ссылки на метод вставки, который принимает dict в качестве аргумента, но предполагая, что rd является dict с 10 записями, key =имя поля, значение = значение для вставки, следующий код завершится ошибкой

    db.OrdersFull.insert(rd)

С ошибкой: TypeError: insert () принимает ровно 1 аргумент (2 дано)
1) какая-либо подсказка?
2) с этим решением имя таблицы (OrdersFull) все еще должно быть известно во время разработки, любой способ вставить в таблицу, имя которой известно только во время выполнения?
3) Есть ли место, где одинможно найти справочную информацию для доступных вызовов web2py API?

1 Ответ

0 голосов
/ 19 сентября 2018

Чтобы получить доступ к таблице на основе выражения Python, которое выдает его имя, вы можете сделать:

tablename = 'mytable'
db[tablename]

Это задокументировано здесь .

Чтобы использоватьсловарь с методом .insert(), вы можете использовать стандартную распаковку аргумента ключевого слова Python:

db[tablename].insert(**mydict)

Это не относится к web2py или DAL, но является стандартным синтаксисом Python.

Существует такжеспециальный метод, который вы можете использовать для фильтрации любых элементов из словаря, которые не являются полями в таблице:

db.mytable.insert(**db.mytable._filter_fields(mydict))

Вышеприведенное полезно, если вы передаете запись, которая ранее была выбрана из таблицы,так как он автоматически отфильтрует поле id из записи (вы не хотите указывать id при вставке, так как оно будет автоматически создано базой данных).

Относительно ссылки на API, кромеиз книги есть также эта документация API .

...