Namun sebenarnya, Anda tidak dapat mengonversi data antara dua database heterogen dengan cara ini. Pada langkah kedua, Anda akan terjebak dengan kesalahan. Alasannya adalah perbedaan tata bahasa antara sintaks SQLite dan MySQL
Tulis skrip Perl/Phython untuk memigrasikan SQLite ke MySQL?
Menulis skrip sederhana akan membantu dengan basis data sederhana
Dengan cara yang paling sepele, kode python mungkin terlihat
objek = ModelObjek. objek. menggunakan['sqlite']. semua[]
untuk obj dalam objek
keberatan. simpan [menggunakan = 'mysql']
Tapi itu tidak cukup dalam banyak kasus
Untuk mengatasi tantangan migrasi data antara SQLite dan MySQL, lihat DBConvert untuk SQLite dan MySQL
Saya baru-baru ini 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
Tolong 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/unduh. html. Anda juga perlu menginstal MySQL. Jika Anda memerlukan bantuan, ikuti tutorial di sini
Basis data saat ini memiliki semua tabel web2py default serta tabel pengguna dengan field id, start_date, dan end_date
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//databases/”. Untuk mengunduh, buat database dump, dengan menjalankan perintah berikut di dalam terminal
$ sqlite3 storage.sqlite .dump > output_before.sql
_Menggunakan editor teks, edit output_before. .sql
- Hapus semua baris yang dimulai dengan
PRAGMA
_,BEGIN TRANSACTION
,CREATE TABLE
danCOMMIT
- Hapus semua baris yang berkaitan dengan tabel
_0 [i. e. ,$ sqlite3 storage.sqlite .dump > output_before.sql
_1]$ sqlite3 storage.sqlite .dump > output_before.sql
- Untuk semua pernyataan
_2, ganti tanda kutip ganda [$ sqlite3 storage.sqlite .dump > output_before.sql
3] sebelum dan sesudah$ sqlite3 storage.sqlite .dump > output_before.sql
4 dengan backticks [$ sqlite3 storage.sqlite .dump > output_before.sql
5] - e. g.$ sqlite3 storage.sqlite .dump > output_before.sql
_6$ sqlite3 storage.sqlite .dump > output_before.sql
Terakhir, simpan file sebagai output_after. sql di desktop Anda
Hilangkan iklanpengaturan MySQL
Buat database MySQL di server jarak 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. Edit db. py
db = DAL['mysql://:@localhost/']
Simpan file
Izinkan web2py untuk menginisialisasi database MySQL
- Cadangkan isi folder
_7. Kemudian hapus isi folder tersebut$ sqlite3 storage.sqlite .dump > output_before.sql
- Kembali ke admin web2py. Klik tombol "administrasi database" untuk membuat tabel di database MySQL lokal Anda
Jalankan database MySQL Anda di terminal untuk memeriksa untuk memastikan tabel kosong telah ditambahkan ke database
Tambahkan data
Arahkan ke tempat Anda menyimpan keluaran. 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 dieksekusi sepenuhnya
Di dalam admin web2py, periksa database dan aplikasi Anda untuk memastikan data baru dapat diakses
Tandai sebagai Selesai
🐍 Trik Python 💌
Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python
Kirimi Saya Trik Python »
Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata
Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista
Tingkatkan Keterampilan Python Anda »
Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke Real Python
Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista
Tingkatkan Keterampilan Python Anda »
Bagaimana menurut anda?
Nilai artikel ini
Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari?
Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami