Наскоро имах нужда да конвертирам базирано на web2py CRM приложение, хоствано на Apache сървър със SQLite бекенд в MySQL. По-долу са стъпките, които работиха за мен. Създадох примерно приложение, с което да работя, ако искате да следвате, можете да изтеглите всички файлове тук.
Моля, обърнете внимание:използвам web2py версия 2.4.7 в Unix среда. Преди да започнете, уверете се, че имате инсталиран SQLite във вашата система. Можете да инсталирате това с pip,
pip install sqlite
, или можете да вземете двоичните файлове на http://sqlite.org/download.html. Имате нужда и от инсталиран MySQL. Ако имате нужда от помощ, следвайте уроците тук.
Текущата база данни има всички уеб2py таблици по подразбиране, както и потребители таблица с полетата id , начална_дата и крайна_дата :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Този код следва синтаксиса на web2py DAL. В таблицата има 30 000 реда данни.
Изчистване на данни
Изтеглете най-новата база данни SQLite на вашето приложение. По подразбиране това е файлът с име storage.sqlite в папката “/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
С помощта на текстов редактор редактирайте output_before.sql файл:
- Премахнете всички редове, които започват с
PRAGMA
,BEGIN TRANSACTION
,CREATE TABLE
иCOMMIT
. - Премахнете всички редове, отнасящи се до
sqlite_sequence
таблица (т.е.DELETE FROM sqlite_sequence;
). - За всички
INSERT INTO "<table_name>" VALUES(...)
изрази, заменете двойните кавички (" "
) преди и след<table_name>
с обратни отметки (` `
) - напр.INSERT INTO `table_name` VALUES(...)
.
Накрая запазете файла като output_after.sql на вашия работен плот.
Настройка на MySQL
Създайте базата данни MySQL на отдалечения сървър. Обърнете внимание на името на базата данни, потребителското име и паролата. Можете също да настроите вашата база данни локално за тестване, което ще използвам за този урок:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Конфигурирайте приложението си да използва MySQL. Стартирайте вашия web2py администратор. Редактирайте db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Запазете файла.
Позволете на web2py да инициализира MySQL базата данни:
- Архивирайте съдържанието на
/web2py/applications/<your_application>/databases/
папка. След това изтрийте съдържанието на папката. - Обратно към администратора на web2py. Щракнете върху бутона „администриране на база данни“, за да създадете таблиците във вашата локална MySQL база данни.
Стартирайте вашата MySQL база данни в терминала, за да проверите дали празните таблици са добавени към базата данни:
Добавяне на данни
Придвижете се до мястото, където сте запазили output.sql (трябва да е вашият работен плот), след това изпълнете следната команда, за да добавите данни към MySQL:
$ mysql -u root migration < output_after.sql
Това ще отнеме няколко минути, за да се изпълни напълно.
В администратора на web2py проверете вашата база данни и приложение, за да се уверите, че новите данни са достъпни.