Baru-baru ini saya perlu mengonversi aplikasi CRM berbasis web2py yang dihosting di server Apache dengan backend SQLite ke MySQL. Di bawah ini adalah langkah-langkah yang berhasil untuk saya. Saya membuat contoh aplikasi untuk digunakan jika Anda ingin mengikuti, Anda dapat mengunduh semua file di sini.
Harap dicatat:Saya menggunakan web2py versi 2.4.7 di lingkungan Unix. Sebelum memulai, pastikan Anda telah menginstal SQLite di sistem Anda. Anda dapat menginstal ini dengan pip,
pip install sqlite
, atau Anda dapat mengambil file biner di http://sqlite.org/download.html. Anda juga perlu menginstal MySQL. Jika Anda membutuhkan bantuan, ikuti tutorialnya di sini.
Basis data saat ini memiliki semua tabel web2py default serta pengguna tabel dengan bidang id , tanggal_mulai , dan tanggal_akhir :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Kode ini mengikuti sintaks DAL web2py. Ada 30.000 baris data dalam tabel.
Pembersihan data
Unduh database SQLite terbaru aplikasi Anda. Secara default, ini adalah file bernama storage.sqlite di bawah folder “/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
Menggunakan editor teks, edit output_before.sql berkas:
- Hapus semua baris yang dimulai dengan
PRAGMA
,BEGIN TRANSACTION
,CREATE TABLE
danCOMMIT
. - Hapus semua baris yang berkaitan dengan
sqlite_sequence
tabel (yaitu,DELETE FROM sqlite_sequence;
). - Untuk semua
INSERT INTO "<table_name>" VALUES(...)
pernyataan, ganti tanda kutip ganda (" "
) sebelum dan sesudah<table_name>
dengan backticks (` `
) - mis.INSERT INTO `table_name` VALUES(...)
.
Terakhir, simpan file sebagai output_after.sql di desktop Anda.
Pengaturan MySQL
Buat database MySQL di server jauh. Catat nama database, username dan password. Anda juga dapat mengatur database Anda secara lokal untuk pengujian, yang akan saya gunakan untuk tutorial ini:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Konfigurasikan aplikasi Anda untuk menggunakan MySQL. Luncurkan admin web2py Anda. Sunting db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Simpan file.
Izinkan web2py untuk menginisialisasi database MySQL:
- Cadangkan konten
/web2py/applications/<your_application>/databases/
map. Kemudian hapus isi folder tersebut. - Kembali ke admin web2py. Klik tombol “administrasi database” untuk membuat tabel di database MySQL lokal Anda.
Jalankan database MySQL Anda di terminal untuk memastikan tabel kosong telah ditambahkan ke database:
Tambahkan data
Arahkan ke tempat Anda menyimpan output.sql (harus desktop Anda), lalu jalankan perintah berikut untuk menambahkan data ke MySQL:
$ mysql -u root migration < output_after.sql
Ini akan memakan waktu beberapa menit untuk sepenuhnya dijalankan.
Dalam admin web2py, periksa database dan aplikasi Anda untuk memastikan data baru dapat diakses.