# 数据库
[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/')
```