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

Reply via email to