<commit_before># Django 與資料庫的互動 - Django Model

這個章節我們會講到 Django 要如何跟資料庫做互動。

## Setting Database

使用 Django 的最大好處之一就是 Django 原生支援許多的資料庫，只要經過簡單的設定，你可以輕鬆從 sqlite 轉換到 MySQL 甚至是 Oracle。為了我們現在開發方便，我們就先用最簡單的 sqlite 吧！

Django 當中跟資料庫相關的設定，都在 settings.py 當中。打開 blog/settings.py 這個檔案，找到並且修改成以下的程式碼：

```python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/tmp/blog',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}
```

在這邊，我們指定了 database engine 為 sqlite3，當然你也可以使用 MySQL、Oracle 等等其他資料庫。另外還要指定我們要連的 database 名稱、使用者、密碼、HOST 以及 PORT。在這邊由於我們是用 sqlite，所以名稱的部分就填上一個檔案路徑。

## Django Model

在 Django 當中，我們是透過 Django Model 來跟資料庫做互動。在這邊，我們透過寫 Django Model，讓資料庫能夠產生相對應的 Table，關於 Model 基本的概念如下：

* 每一個 Django Model 都繼承自 django.db.models.Model
* 在 Model 當中的每一個 attribute 都代表了一個 database field
* Django 讓我們可以透過 Model API 來執行 database query，這代表你可以儘量不用寫 SQL

既然這是一個 blog 網站，那麼首先我們當然要來建立一個儲存文章的 Model。另外我們也希望建立一個儲存類別(category) 的 Model。
<commit_msg>Update DATABASES info in settings.py<commit_after># Django 與資料庫的互動 - Django Model

這個章節我們會講到 Django 要如何跟資料庫做互動。

## Setting Database

使用 Django 的最大好處之一就是 Django 原生支援許多的資料庫，只要經過簡單的設定，你可以輕鬆從 sqlite 轉換到 MySQL 甚至是 Oracle。為了我們現在開發方便，我們就先用最簡單的 sqlite 吧！

Django 當中跟資料庫相關的設定，都在 settings.py 當中。打開 blog/settings.py 這個檔案，會看到如下的程式碼：

```python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
```

在預設設定中，Django 指定了 database engine 為 sqlite3，並將它放在 `BASE_DIR` 這個目錄（代表你的專案最外層目錄）。你也可以使用其他資料庫，官方支援的除了 SQLite 外尚有 PostgreSQL、MySQL 與 Oracle，另外也有一些非官方的套件可以支援其他資料庫。大部份的資料庫系統中，通常需要指定 database 名稱、使用者、密碼、HOST 以及 PORT，但在這裡我們為了方便說明起見，直接使用預設的 SQLite 設定。



## Django Model

在 Django 當中，我們是透過 Django Model 來跟資料庫做互動。在這邊，我們透過寫 Django Model，讓資料庫能夠產生相對應的 Table，關於 Model 基本的概念如下：

* 每一個 Django Model 都繼承自 django.db.models.Model
* 在 Model 當中的每一個 attribute 都代表了一個 database field
* Django 讓我們可以透過 Model API 來執行 database query，這代表你可以儘量不用寫 SQL

既然這是一個 blog 網站，那麼首先我們當然要來建立一個儲存文章的 Model。另外我們也希望建立一個儲存類別(category) 的 Model。

{'fraction_non_alphanumeric': 0.09498806682577565, 'fraction_numerical': 0.002386634844868735, 'mean_word_length': 5.07536231884058, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4354513', 'n_tokens_mistral': 1311, 'n_tokens_neox': 1494, 'n_words': 188}