Respuestas:
Podría usar algo como lo siguiente:
from qgis.core import QgsVectorLayer, QgsMapLayerRegistry
vlayer = QgsVectorLayer( "?query=SELECT * FROM road WHERE type = 'Expressway'", "vlayer", "virtual" )
QgsMapLayerRegistry.instance().addMapLayer(vlayer)
Puede encontrar ejemplos sobre cómo usar capas virtuales a través de Python desde el GitHub del autor:
'QgsMapLayerRegistry' is not defined
. La instrucción SQL funciona cuando se ejecuta en el cuadro de diálogo 'Crear una capa virtual'.