To clarify, are you trying to develop a script which will take a database
and from that create all of the necessary django stuff to enable you to fire
up a browser and look at the database in one step..?

One thing you might want to look at is using SQLAlchemy to introspect the
database, it should be a fairy simple to translate the structure of a Table
(SA) instance to a dynamically created Model class. Check out Marty's
blog<http://gulopine.gamemusic.org/2007/08/dynamic-models-in-real-world.html>and
this <http://code.djangoproject.com/wiki/DynamicModels> from the django wiki
for some tips.

Also if you're going to look at deploying this as a kind of standalone
thing, why not just supply an sqlite db file with it with a superuser and
all the django stuff already created..? This would be relatively easy to do
with multiple-db and you could also provide a barebones settings.py and the
requisite app/project structure to chuck your newly created models into.

Neat idea! :-)
Ben

On 24/08/07, Felix Ingram <[EMAIL PROTECTED]> wrote:
>
>
> Here's a little something that I've hacked up, which I'm posting here
> to see whether anyone can take it any further.
>
> After seeing Jacob use Django to inspect his iPhone's databases I
> wondered whether some sort of automatic database browser could be
> scripted up. Here's the simple example I got working:
>
> 1. First make a new project (db_test) and app (my_big_fat_fake_app).
> 2. Configure the settings file to point at the database you'd like to
> inspect.
> 3. Add admin and my_big_fat_fake_app to the INSTALLED_APPS.
> 4. Create an inspect.py file with the following in it:
> ================
> import sys, os
>
> from django.core.management.commands import inspectdb, runserver, syncdb
> from django.core.management import setup_environ
>
> import settings
> setup_environ(settings)
>
> c = inspectdb.Command()
> s = c.handle_inspection()
>
> new_lines = []
> for line in s:
>     if "class Meta" in line:
>         new_lines.append("    class Admin:")
>         new_lines.append("        pass")
>         new_lines.append("    class Meta:")
>         new_lines.append("        app_label='my_big_fat_fake_app'")
>     else:
>         new_lines.append(line)
> lines = "\n".join(new_lines)
> a = compile(lines, "<string>", "exec")
> exec(a)
>
> s = syncdb.Command()
> s.execute()
>
> r = runserver.Command()
> r.execute()
> ================
> 5. Run the file (python inspect.py)
> 6. This should create all of the Django tables in your database,
> prompt you to create a superuser and then launch the development
> server. You should then be able to log in and browse and edit the
> database.
>
> Problems:
> 1. Running it twice will add all of the Django tables to the admin index.
>
> Future features:
> These are the things I'd like to implement but I'm getting stuck on:
> 1. Prompt the user for the database string (I'm getting stuck tweaking
> the settings module).
> 2. Auto-create a superuser (use a default or take it from the command
> line).
> 3. Eliminate the need to create a project and app.
> I've tried dynamically creating urls and settings and can get the
> admin interface up, but no models are shown (this seems to be because
> the fake app I created isn't recognised by the admin). I've been using
> the 'new' module but quickly started to bump up against my lack of
> python-internals knowledge.
> 4. (This is the magic one) Use the multi-db branch to create the
> Django and admin tables in a sqlite://:memory: database.
> If this was possible then you could point the script at any database,
> browse and edit, and leave it otherwise untouched. Which I think would
> be pretty sweet.
>
> I've posted this to developers as I think it requires some in depth
> knowledge of how Django does its job. Apologies if it's a bit off
> topic.
>
> Hope this inspires someone.
>
> Regards,
>
> Felix
>
> P.S. Apologies for the pun in the subject line: it's the best Django
> joke I could come up with (thank you http://thesaurus.reference.com/)
>
> >
>


-- 
Regards,
Ben Ford
[EMAIL PROTECTED]
+628111880346

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to