1. 程式人生 > >Python程式設計入門學習筆記(六)

Python程式設計入門學習筆記(六)

## Python第三課

### 推薦一個python資料結構視覺化工具 http://www.pythontutor.com/

### 課表

- Mysql資料庫的基本操作
- 用python操作資料庫
- 編寫python爬蟲並儲存到資料庫

### 資料庫

    我們平時說的資料庫,指的是資料庫管理系統

### Mysql資料庫

    MariaDB:MariaDB的目的是完全相容MySQL,包括API和命令列,使之能輕鬆成為MySQL的代替品

### 關係型資料庫

    另外一種型別的資料庫是:非關係型資料庫。比較流行的是:Mongodb,redis


```python
dict = {
    'a' = 100,
    'b' = 200
}
```

    json格式 資料交換語言


```python
import json

with open('K:/Code/jupyter-notebook/Python Study/test.json') as f:
 #  json.load(f)
    print(f.readlines())

```

    ["{'a' : 100,'b' : 200,'c' : 300}"]
    


```python
#錯誤
data_1 = "{'a': 1,'b': 2,'c': 3}"
#正確,單引號在外
data_2 = '{"a": 1,"b": 2,"b": 3}'

j_data = json.loads(data_2)
type(j_data)

with open('K:/Code/jupyter-notebook/Python Study/test.json', 'r') as f:
    json.load(f)
    print(j_data)
```

    {'a': 1, 'b': 3}
    

### MySQL資料庫基本操作


```python
# 連結資料庫
mysql -u root -p
# u 是使用者名稱 p 是需要用密碼登入

# 檢視資料庫
show databases;

# 選擇資料庫
use database_name;

# 檢視資料庫中的table表
show tables;

# 檢視table表的資料結構
desc tables;

# 查看錶中的資料
select * from table_name;

# 檢視資料並限制數量
select * from table_name limit 10;
```

### 資料庫管理工具

 sequelpro(mac) 連結: http://www.sequelpro.com/  
 Navicat(Win)

#### 命令列操作資料庫

#### 建立資料庫
    creat database database_name;
#### 刪除資料庫
    drop database database_name;
#### 指定字符集和校對集,建立資料庫
    creat database database_name default charset utf8mb4 collate utf8mb4_general_ci; 
#### 建立表格
    create table table_name{
        id int(11) unsigned not null default null auto_increment,
        name varchar(80) not null,
        primary key('id')
    };
#### 插入資料
    insert into column_name ('id','name')
        values(1,'value_name');
#### 修改資料
    update column_name set name = 'value_name2';
        where name = 'value_name1';
#### 刪除資料
    delete from column
        where id = 6;

#### mysql資料型別: http://www.runoob.com/mysql/mysql-data-types.html

### 使用Python操作資料庫

#### python安裝第三方庫
    1、pip : 舉例:pip install pymysql
    2、conda : 舉例:conda install pymysql

#### python安裝MySQL資料庫支援
    pip install MySQL-python
    pip install pymysql 


```python
import pymysql
```


```python
DATABASE = {
    'host': 'localhost', #如果是遠端資料庫,此處為遠端伺服器的ip地址
    'database': 'db_library',
    'user' : 'root',
    'password': 'toor',
    # 字符集編碼,防止資料亂碼
    'charset' : 'utf8'
}
# db = pymysql.connect(host = 'localhost',user = 'root',password = 'toor',database = 'goods',charset = 'utf8')
# 等價於
# db = pymysql.connect('localhost','root','toor','goods',)
# 等價於
db = pymysql.connect(**DATABASE)
```

### 遊標


```python
cursor = db.cursor()
```

### 查詢


```python
sql = "SELECT * FROM tb_booktype limit 5"
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
    print(row)
```

    (1, '文學作品', 5, 5.0)
    (2, '武俠小說', 3, 0.0)
    (3, '計算機類', 10, 1.0)
    (4, '微型小說', 6, 1.0)
    (5, '邏輯推理', 13, 10.0)
    

### 插入操作


```python
sql = "INSERT INTO tb_booktype(typename) VALUES('英語閱讀');"
cursor = db.cursor()
cursor.execute(sql)
db.commit()
```

### 刪除操作


```python
sql = "delete from tb_booktype where typename='英語閱讀';"
cursor = db.cursor()
cursor.execute(sql)
db.commit()
```

### 更新操作


```python
sql = "update tb_booktype set typename='英語文學' where typename='英語閱讀';"
cursor = db.cursor()
cursor.execute(sql)
db.commit()
```

### 捕捉異常


```python
try:
    do something
except Exception as e:
    print(e)
```