2015年11月10日 星期二

Python學習筆記(一)

這幾天,終於把Python的線上課程(https://www.codecademy.com)上完了,基本的語法和函數都不難,比較難的反而是class的語法有點難懂,不過這部份應該多寫就能習慣…
接下來,進入Django的世界,首先就是很多種plugin要安裝(目前用到的有pip, easy_install, setuptoolsDjango, psycopg2)。
easy_install, setuptools和pip通常已經內建於Python安裝程式。

安裝開發環境:
OS: Windows 7 64bits
1. Visual Studio 2015 Community
2. Git Hub
3. Python 3.4.3
4. PostgreSQL 9.4



Model-View-Template的觀念,等同於一般常聽到的MVC design pattern,只是對應上有所不同。在Django的世界中,Model指的一樣是Data layer,而View指的就是控制business logic的部份(也就是一般MVC中的controller),最後Template就是Presentation layer。

目前的學習重點在於Model部份,會選擇由此切入是因為發生了一些問題,Django也是有提供Data Model Migration的功能,但僅限於Model建立好後,第一次使用,往後如果Model的class有變更,要再migration,就只有兩種方法:
一、把資料庫砍掉,重新下migration 命令(python manage.py migrate)
二、手動到資料庫去把變更的欄位同步調整內容
這兩種方式其實都不好,第一種方法在系統上線後,並不實用;而第二種更是不可能。

後來發現另外安裝south可以達成我要的目(只下一個命令,就可以自動把有變更的部份同步到資料庫中),但安裝後才發現不適用於最新的 Django版本,目前僅支援Django 1.6以下的版本。
又回到了原點,只好把資料庫刪除,再重新下命令產生Model。

以上為Model first,另外Django也針對已存在的database提供了Database first的建立方式,由Database去建立出model,command為:python manage.py inspectdb

References:
https://docs.djangoproject.com/en/1.8/
https://djangogirlstaipei.gitbooks.io/django-girls-taipei-tutorial/content/index.html

2015/11/22 補充
Migrate的第三種方式:利用makemigrations command:python manage.py makemigrations APP_NAME
●在對應的app目錄下,會產生migrations資料夾,裡面放的是要到時候要同步到資料庫的sql變更資訊,檔名會包括migrate版本號
第一次makemigrations會產生__init__.py的檔案,後續變更再下同一個命令時,就會有不同版本的*.py,例如:0001_initial.py
●檢視產生的SQL command - 利用sqlall command:python manage.py sqlall APP_NAME VERSION
會出現把模型翻譯成SQL語言的結果
●同步模型至資料庫 - 利用migrate command:python manage.py migrate APP_NAME VERSION
以上命令中,APP_NAME為Django app name,而VERSION為migration的版本號,若不指定版本編號,則自動更新到最新版本。

沒有留言: