मुझे हाल ही में एक अपाचे सर्वर पर होस्ट किए गए वेब 2py-आधारित सीआरएम ऐप को SQLite बैकएंड के साथ MySQL में कनवर्ट करने की आवश्यकता है। नीचे दिए गए कदम हैं जो मेरे लिए काम करते हैं। मैंने काम करने के लिए एक नमूना एप्लिकेशन बनाया है यदि आप साथ चलना चाहते हैं, तो आप यहां सभी फाइलें डाउनलोड कर सकते हैं।
<ब्लॉककोट>
कृपया ध्यान दें:मैं यूनिक्स वातावरण पर web2py संस्करण 2.4.7 का उपयोग कर रहा हूं। शुरू करने से पहले, सुनिश्चित करें कि आपके सिस्टम पर SQLite स्थापित है। आप इसे पाइप के साथ स्थापित कर सकते हैं, pip install sqlite
, या आप http://sqlite.org/download.html पर बाइनरी फ़ाइलें ले सकते हैं। आपको MySQL स्थापित करने की भी आवश्यकता है। यदि आपको सहायता की आवश्यकता है, तो यहां ट्यूटोरियल का अनुसरण करें।
वर्तमान डेटाबेस में सभी डिफ़ॉल्ट web2py तालिकाओं के साथ-साथ उपयोगकर्ता . भी हैं फ़ील्ड के साथ तालिका आईडी , प्रारंभ_दिनांक , और end_date :
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 व्यवस्थापक के भीतर, यह सुनिश्चित करने के लिए कि नया डेटा पहुंच योग्य है, अपने डेटाबेस और एप्लिकेशन की जांच करें।