# 數據庫
[TOC]
## [mysql](http://www.runoob.com/python3/python3-mysql.html)
### 使用
1. 如果MySQL的版本≥5.5.3,可以把編碼設置為utf8mb4。utf8mb4和utf8完全兼容,但它支持最新的Unicode標準,可以顯示emoji字符。
2. 執行INSERT等增刪改操作后要調用commit()提交事務;
3. MySQL的SQL占位符是%s
```python
import pymysql
# 導入MySQL驅動:
import mysql.connector
# 鏈接數據庫 獲取操作游標
def mysql_db():
# 鏈接數據庫 獲取操作游標
config = {
'host': MYSQL_HOST,
'port': MYSQL_PORT,
'user': MYSQL_USER,
'passwd': MYSQL_PASSWD,
'database' : 'spider',
'charset':'utf8mb4',
'cursorclass': pymysql.cursors.DictCursor
}
conn = pymysql.connect(**config)
cursor = conn.cursor()
return cursor
# 注意MySQL的占位符統一是%s:
cursor = conn.cursor()
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 插入數據
for x in range(3):
cursor.execute("insert into user (id, name) values (%s, %s)", [str(x), "TaoYuan"+str(x)])
print(cursor.rowcount) # 只讀屬性,返回執行execute()方法后影響的行數
# 刪除
cursor.execute("delete from user where id < %s",[10])
# 改
cursor.execute("update user set name='zxg' WHERE id = %s",[11])
# 查
cursor.execute("select * from user limit 10")
res = cursor.fetchall()
print(res) # [('11', 'zxg'), ('12', 'TaoYuan12')]
# 提交事務
conn.commit()
cursor.close()
```
## [redis](https://www.jianshu.com/p/2639549bedc8)
### 安裝庫
redis,redis-py
### 說明
```python
# 連接redis,加上decode_responses=True,寫入的鍵值對中的value為str類型,不加這個參數寫入的則為字節類型。
r = redis.Redis(host='localhost', port=6379, decode_responses=True, db=1)
# redis-py使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。默認,每個Redis實例都會維護一個自己的連接池。
# 可以直接建立一個連接池,然后作為參數Redis,這樣就可以實現多個Redis實例共享一個連接池
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
```
## mongodb
http://www.runoob.com/python3/python-mongodb.html
https://www.cnblogs.com/melonjiang/p/6536876.html
### 說明
```python
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
```