Hmm , I tried this approach (and some other variants from this thread.): but I run into an error after 15? minutes or so; The error occurs during the execution of the import_from_csv...
--- Traceback (most recent call last): File "<console>", line 1, in <module> File "/Users/acidjunk/GIT/formatics.web2py/gluon/dal.py", line 8519, in import_from_csv_file *args, **kwargs) File "/Users/acidjunk/GIT/formatics.web2py/gluon/dal.py", line 9345, in import_from_csv_file curr_id = self.insert(**dict(items)) File "/Users/acidjunk/GIT/formatics.web2py/gluon/dal.py", line 9114, in insert ret = self._db._adapter.insert(self, self._listify(fields)) File "/Users/acidjunk/GIT/formatics.web2py/gluon/dal.py", line 1360, in insert raise e timeout: timed out --- De storage.sqlite is 9.4Mb. The exported csv: just under 1Mb. Kind Regards Rene On Wednesday, April 23, 2014 6:25:36 PM UTC+2, Michael Beller wrote: > > Over the past week I've experimented with several options (I'm moving from > sqlite to mysql on python anywhere) and here's what worked for me (and hope > this helps others) ... > > The book describes two methods: > > - export/import all data using CSV files ( > > http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#CSV--all-tables-at-once- > ) > - copy between databases using script cpdb.py ( > > http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=cpdb#Copy-data-from-one-db-into-another > ) > > Previous comments in this thread highlight two other options: > > - sqlite .dump and mysql migration per > > http://www.realpython.com/blog/python/web2py-migrating-from-sqlite-to-mysql/#.Ulm3xmTTXCU > - Mariano/Alan Etkin experimental script - > https://groups.google.com/d/msg/web2py-developers/QxeJNByj6qc/cpBHsa1ymUkJ > > I couldn't get cpdb to work except for a simple model. I'm still learning > both python and web2py and couldn't debug the script but believe it has > something to do with the sequence and dependencies between tables (I have > about 12 tables with numerous foreign keys). This is also true of using > sqlite .dump and mysql migrate (and I also felt this bypassed web2py which > requires a fake_migrate and preferred an option "within" web2py since I'm > also learning MySQL at the same time). > > The experimental script seemed straightforward but (1) I wasn't sure how > to execute the script with both DAL's simultaneously and (2) the primary > advantage over CSV export/import is the retention of the source row id's > (which isn't needed if you start with a new database schema - see my > comments below). > > In the end, I used the following procedure using web2py cdv > export/import to move my production sqlite db to mysql (which only took > about 7 minutes to execute after learning/testing/experimenting with the > various options) ... > > 1. Export all data in CSV format > a. open console and navigate to the web2py folder > b. start web2py in interactive console mode with: > python web2py.py -S your_app_name -M –P > c. export data in csv format with: > db.export_to_csv_file(open('your_app_name_export.csv', 'wb')) > [this stores the file in the root of the web2py directory] > d. exit web2py interactive console mode with: > exit() > 2. Prepare web2py application for new database and create new database > a. in console, navigate to application folder > b. backup existing SQLite database (and corresponding .table files) > with: > cp -r databases databases_bak > c. create empty databases folder with: > rm -r databases > mkdir databases > d. change DAL connection string in app to: > db = DAL('mysql://user_name:password@mysql.server/database_name') > [for pythonanywhere, the database_name is in the form > user_name$database_name] > e. create new empty mysql database schema (from control panel in > pythonanywhere or mysql command prompt) > 3. Generate database tables and load data > a. start web2py in interactive console mode with: > python web2py.py -S your_app_name -M –P > [this will execute the models and generate the mysql database > tables and the .table files in the database directory] > c. import data in csv format with: > db.import_from_csv_file(open('your_app_name_export.csv', 'rb')) > db.commit() # this is missing from some of the other instructions > but is required > d. exit web2py interactive console mode with: > exit() > 4. Celebrate! > > If you start with a new empty database, all record id's will be the same > as the source database (and all foreign key references are maintained). If > the database had previous transactions, the new data will maintain all > foreign key references but the id's will not match the source data (which > is only important if there are any code or external references to specific > id's as Alan pointed out in his posts). > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.