前言

今日有个爬虫的需求,就在我把各个组件都测试完毕,将他们自信的组装到一起,结果,除了意外,这个意外就是显示sql语句有错误,可是,在我反复的在终端试验,却没有任何的错误,于是我开始了漫长的资料查询。

原因分析

pymysql在储存长文本,有时会出现转义字符,可能导致两个连续的数据会被挤到一起

解决办法

我研究了很多的解决办法,选出两种最为方便的

  1. 在连接时,将编码格式改为utf8mb4

  2. 在需要转义的对象用连接.escape(value)方法转义

    sql = "insert into article(title,img,link,create_time,status) values(%s,%s,%s,%s,'1')" % (conn.escape(title),conn.escape(img),conn.escape(link),conn.escape(create_time),)

django多数据库的迁移

首先,我们需要在settings中链接上多个数据库,并且指定app

然后指定哪个模型使用哪个数据库

DATABASE_APPS_MAPPING = {
    # 'app_name':'database_name',
    'user': 'user',
}

如果不想每个应用同步到特定数据库,可以定义 database router ,它实施限制特定模型可用性的策略。

在迁移时,生成迁移文件,命令不变

python manage.py makemigrations

迁移时需要指定哪个app进行数据迁移

python manage.py migrate --database=user