时间:2021-07-01 10:21:17 帮助过:54人阅读
返回:
- <code class=" hljs sql"><span class="hljs-operator"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> <span class="hljs-string">`app_jcguo`</span> /*!<span class="hljs-number">40100</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">CHARACTER</span> <span class="hljs-keyword">SET</span> utf8 */</span></code>
以及
- <code class=" hljs sql"><span class="hljs-operator"><span class="hljs-keyword">SHOW</span> <span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> Hotels</span></code>
我添加了default charset:
- <code class=" hljs sql"><span class="hljs-operator"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-string">`Hotels`</span> (
- <span class="hljs-string">`id`</span> <span class="hljs-keyword">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`name`</span> <span class="hljs-keyword">varchar</span>(<span class="hljs-number">40</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`city`</span> <span class="hljs-keyword">varchar</span>(<span class="hljs-number">10</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`address`</span> text,
- <span class="hljs-string">`price`</span> <span class="hljs-keyword">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`total`</span> <span class="hljs-keyword">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`avail`</span> <span class="hljs-keyword">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`pic_b`</span> <span class="hljs-keyword">varchar</span>(<span class="hljs-number">40</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-string">`pic_s`</span> <span class="hljs-keyword">varchar</span>(<span class="hljs-number">40</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
- <span class="hljs-keyword">PRIMARY</span> <span class="hljs-keyword">KEY</span> (<span class="hljs-string">`id`</span>)
- ) ENGINE=MyISAM <span class="hljs-keyword">DEFAULT</span> CHARSET=utf8</span></code>
属性也都是varchar类型并且设置为utf8_general_ci:
最后Google寻找解决方案,原来是MySQLdb.connect()还要设置一遍charset来指定cursor取数据库数据的格式:
- <code class=" hljs python"><span class="hljs-decorator">@app.before_request</span>
- <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">before_request</span><span class="hljs-params">()</span>:</span>
- g.db = MySQLdb.connect(
- MYSQL_HOST,
- MYSQL_USER,
- MYSQL_PASS,
- MYSQL_DB,
- port=int(MYSQL_PORT),
- charset = <span class="hljs-string">‘utf8‘</span>
- )</code>
第一次用MySQL存中文,遇到此坑,遂记录在Blog上。SQLite所有操作默认都是UTF-8,TAT,老用python+SQLite就忽略了这个问题。
对了,文件头中别忘了添加编码注释:
- <code class=" hljs vala"><span class="hljs-preprocessor"># -*- coding:utf8 -*-</span>
- <span class="hljs-preprocessor">#encoding = utf-8</span></code>
SAE用flask+MySQL中文'utf8' codec can't decode byte 0xb7解决方法
标签:sae flask mysql mysql中文 utf8