[Scons-users] database builder

Bill Deegan bill at baddogconsulting.com
Sat Apr 13 16:24:29 EDT 2013


Phil,

There are a number of python based database migration packages.
For example for Django there is south. (And actually it might not be tied
to django, not sure).

If I understand correctly, you're looking for a facility to do both:
a) do initial configuration of a database,it's tables,etc.
b) upgrade/update an existing database,tables,etc

Is that correct?

-Bill


On Sat, Apr 13, 2013 at 7:15 AM, Philipp Kraus
<philipp.kraus at flashpixx.de>wrote:


> Hi Gary,

>

>

> Am 13.04.2013 um 15:51 schrieb Gary Oberbrunner:

>

> While this is a cool idea, I don't think SCons would actually be that

> helpful. I'd start by looking at how Rails migrations work. Schema

> updates should be defined by the db developer; I don't think trying to diff

> schemas (with SCons or any tool) will actually get you where you need.

>

>

> At the moment I do this like env.Command("database", "mysqlfile.sql",

> "mysql.... $SOURCE")

> It works, but IMHO it's not a good solution, because the parameters can be

> different on different OS / versions, so I need different switches for

> calling the database client.

> Bruce has describe Liquidbase, so in this case for the developers of a

> project can be this a solution, but I would like to use Scons also on

> update procedure on

> the userside. But in this view I can not tell the user "you need to

> install liquidbase and scons and database driver.... for updating your

> database", also on server

> systems there are often installed not all packages eg Java, Python. Some

> packaging programs with GUI are don't run in a console.

> So "one tool (Scons) for everything" can be a nice idea, but for database

> there must be more abstraction, I think about UML specification and the

> model transformation.

>

> There's often queries that need to be run when updating a schema for

> instance, to compute values for a new column or set the default value or

> other things.

>

>

> Yes eg you set a field to a "non null" before update it can store null

> values, so I must set in a preprocess the values to other values. So IMHO a

> short call eg alter table

> is not enough, so there must be more processing.

> The update process of a database is also a dependency graph, because the

> calls of changes are ordered.

>

>

> You could certainly *drive* the migration process out of SCons, but even

> there I don't think SCons's dependency analysis will be all that helpful --

> I'd just use os.system() to kick off your migration script (or make it be a

> python function and just execute it straight out of your SConstruct).

>

>

> For developer yes, but I would like to use scons also on the userside and

> than I need an easy call, but not in all system I can use a GUI based

> package.

>

> It is only an idea and I would like thinking about it, because the Python

> structure of Scons can be helpfull.

>

> Thanks

>

> Phil

>

>

>

>

> On Sat, Apr 13, 2013 at 5:34 AM, Philipp Kraus <philipp.kraus at flashpixx.de

> > wrote:

>

>> Hi,

>>

>> I'm searching for database support in Scons something like databse

>> installation and updating. I'm often work with database and do the

>> installation with SQL scripts,

>> but the client is compiled and installed with Scons, so can be this an

>> idea for Scons? Do you think this is a good & meningful feature?

>> At the moment I run env.Command with the database command-line client,

>> but the updating process can not work / can only work with deleting &

>> creating the database.

>>

>> I think a feature like this

>> env.CreateDatabase("localhost:5432", databse="testdb", user"=myself",

>> password="1234", type="postgresql", source="database.sql.scons")

>>

>> should be nice, also an env.UpdateDatabase which updates the database

>> without deleting tables, it creates only alter statements and run these

>> statements for the update process.

>> Scons can handle this calls in an transaction for atomic calls and uses

>> Pythons database packages. The database script should be more than a plain

>> text file, so Scons can

>> check the database and create individual statements during the update

>> process.

>>

>> My idea is, that the Scons database.sql.scons file is a XML files which

>> descriptes tables, indicies, references datatypes (validation via XSD)....

>> On the createdatabase Scons transform this data with XSLT into SQL or

>> walk through the XML tree and creates on-fly the statements and send it

>> over Python Database API

>> The update is more difficult, because I must create a diff between

>> installed tables and new table definition. I think a post- / preprocessing

>> should be also in it, so the user

>> can run some codes before / after the update for modifying datasets.

>>

>> Hope for some comments :-)

>> Have a nice weekend

>>

>> Phil

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>

>

>

> --

> Gary

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20130413/6d33f565/attachment.html>


More information about the Scons-users mailing list