1. 程式人生 > >數據遷移混亂的解決方案與pycharm亂碼問題

數據遷移混亂的解決方案與pycharm亂碼問題

bject arm int gen odi queryset 目錄 enc print

如果數據庫遷移數據混亂,需要刪除進行重建,一般情況下線上環境不會遇到。步驟如下

1.刪除項目app下所有的除去__init__.py的所有文件與目錄。

技術分享圖片

2.刪除數據庫中所有app項目的創建的表

技術分享圖片

3.刪除所有django_migrations表中,所有與app項目相關的表(例如:teacher)

技術分享圖片

4.運行遷移數據庫命令

python mange.py makemigrations teacher

5.運行migrate命令,使遷移生效

python manage.py migrate  #(執行後,在數據庫裏能夠查到表)

pycharm亂碼問題解決方案:

將File-->setting下所有關於encoding的都設置為uft-8

技術分享圖片

mysql數據庫大小寫敏感設置

In [61]: Student.objects.all()                                                                                                                                                                                        
Out[61]: <QuerySet [<Student: 1-心藍-0>, <Student: 2-litao-0>, <Student: 3-夢潔-0>, <Student: 4-魏明凱-0>, <Student: 5-litao-0>, <Student: 6-劉洋-0>, <Student: 7-Amie-0>, <Student: 8-Amie-0>, <Student: 9-aMie-0>]>

In [
62]: Student.objects.values(name).filter(name__exact=amie) Out[62]: <QuerySet [{name: Amie}, {name: Amie}, {name: aMie}]> In [
63]: res = Student.objects.values(name).filter(name__exact=amie) In [64]: print(res.query)
SELECT `teacher_student`.`name` FROM `teacher_student` WHERE `teacher_student`.`name` = amie #這裏代表不區分大小寫

當數據庫或者表排序規則為utf8_general_ci表示不區分大小寫,使用utf8-bin是大小寫敏感。

如果數據庫的--->編輯數據庫-->排序規則為:utf8_general_ci表示不區分大小寫
數據表--->設計表-->選項-->排序規則為:utf8_general_ci表示不區分大小寫
一般字段也可單獨設置排序規則

技術分享圖片技術分享圖片

contains區分大小寫

In [65]: res = Student.objects.values(name).filter(name__contains=amie)                                                                                                                                           

In [66]: print(res.query)                                                                                                                                                                                             
SELECT `teacher_student`.`name` FROM `teacher_student` WHERE `teacher_student`.`name` LIKE BINARY %amie%  #有BINARY代表區分大小寫

數據遷移混亂的解決方案與pycharm亂碼問題