VoxCommando

Help and Support (Using VoxCommando) => Python Scripting => Topic started by: marcusvdt on June 02, 2015, 02:35:27 PM

Title: Querying map tables with python.
Post by: marcusvdt on June 02, 2015, 02:35:27 PM
Quick example demonstrating how to get a python script to query map tables.

First of all you need to download the library from here (https://bitbucket.org/jdhardy/ironpython.sqlite/downloads). Then copy ONLY the DLL file (only the dll file) to the folder below and ignore any instructions from the developer.
<your VC folder>\dlls

Here is the command:
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.4.2-->
<commandGroup open="True" name="map query test" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="633" name="Run the querymaps.py at startup" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>PY.ExecFile</cmdType>
      <params>
        <param>PY\querymaps.py</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>VC.Loaded</event>
    <event>VC.Rebuild</event>
  </command>
  <command id="549" name="Query maps.db3" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Quick example on how to query a table Sensors_Presentation listing all the lines from the table where the fromkey field is equal to the ones in the Sensors_Control_Type table and the tovalue field is equal to 'BOOLEAN' on the Sensors_Control_Type table. Purely a relational database example.">
    <action>
      <cmdType>PY.ExecString</cmdType>
      <params>
        <param>executesquery("select * from Sensors_Presentation where fromkey in (select fromkey from Sensors_Control_Type where tovalue='BOOLEAN')")</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
  </command>
</commandGroup>


Here is the python script. Save it inside your VC installation folder, inside the PY folder and name it querymaps.py:
Code: [Select]
import sqlite3

#Executes queries to VC's map tables
def executesquery(sql):
    print "Going to execute the query:"
    print str(sql)
    con=sqlite3.connect("data\\maps.db3")
    c=con.cursor()
    c.execute(sql)
    print c.fetchall()