Hi Tim: Thanks, that was what I was after, but maybe you are right a couple of extra for loops is not looking too bad after all.
Cheers Mark On 11/03/2008, Tim Golden <[EMAIL PROTECTED]> wrote: > > Tim Golden wrote: > [... snip Elixir-based solution ...] > > I realise, rereading my post that it doesn't really solve > your concern about multiple loops etc. I doubt it's really > a problem, but in the spirit of the question, here's a raw > sqlite solution, again Noddy and untested. > > You've said you're newish to Python and while > there's no black magic here, I am being fairly free with > generator expressions and getattr-fu. If you think the > approach might be useful and need further explanation > feel free to ask. > > <code> > import os, sys > import sqlite3 > import wmi > > os.remove ("c:/temp/wmi.db") > db = sqlite3.connect ("c:/temp/wmi.db") > classes_wanted = ["Win32_Process", "Win32_Service"] > > # > # Generate a dictionary of class name -> WMI class > # > c = wmi.WMI () > wmi_classes = dict ( > (class_wanted, getattr (c, class_wanted)) \ > for class_wanted in classes_wanted > ) > > # > # Create a simplistic Sqlite table for each WMI > # class with one (untyped) column per attribute. > # > for class_name, wmi_class in wmi_classes.items (): > db.execute ("CREATE TABLE %s (%s)" % ( > class_name, > ", ".join (p for p in wmi_class.properties) > )) > > db.commit () > > # > # For each WMI class, add all its instances as > # rows to the corresponding sqlite table. > # > for class_name, wmi_class in wmi_classes.items (): > db.executemany ( > "INSERT INTO %s (%s) VALUES (%s)" % ( > class_name, > ", ".join (p for p in wmi_class.properties), > ", ".join ("?" for p in wmi_class.properties) > ), > [[getattr (c, p) for p in c.properties] for c in wmi_class ()] > ) > > db.commit () > > </code> > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 >
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32