2ème astuce

63 views
Skip to first unread message

eric cuver

unread,
Oct 8, 2014, 4:40:06 AM10/8/14
to web2...@googlegroups.com
il peut arrive qu'on soit obliger de partage une base de donnée pour plusieurs application.

alors selon qu'on soit sur sqlite ou mysql la procédure est différent.

On va prendre l'exemple app1 et app2 doivent partage la même base de donnée.

sur sqlite dans le fichier models.

import os
app1_db_path = os.path.abspath(os.path.join(request.folder, '..', 'prova1', 'databases', 'storage.sqlite' ))
app2_db_path = os.path.abspath(os.path.join(request.folder, '..', 'prova2', 'databases', 'storage.sqlite' ))

.....

db1 = DAL('sqlite://%s' % app1_db_path)
db2 = DAL('sqlite://%s' % app2_db_path)

à partir de là, vous avez juste besoin de s'assurer que les tables que vous créez dans DB1 avec app1 sont définis avec migrate = False dans DB1 sur app2, tel que :

dans app1/models/db.py

db1.define_table('a_test_table', Field('a_test_field'))

et dans app2/models/db.py

db1.define_table('a_test_table', Field('a_test_field'), migrate=False)


Si c'est sur mysql c'est plus simple car l'URI ne changera pas pour les deux applications, vous avez juste a faire:

db1 = DAL('mysql://whateverapp1')
db2 = DAL('mysql://whateverapp2')

il faut juste  définir avec migrate = True sur une table et definir migrate = False de l'autre côté. 

s'il y a des question n'hesitez pas il possible que dans la précipitation de l'écriture j'ai oublie des éléments.

a plus

Gael Princivalle

unread,
Oct 8, 2014, 10:08:39 AM10/8/14
to web2...@googlegroups.com
Intéressant, merci.
Reply all
Reply to author
Forward
0 new messages