django 1.11 官方文件
conn_max_age 定義資料庫連線時限(all)
default:0 儲存在每個請求結束時關閉資料庫連線的歷史行為。連線管理none:保持長連線
other:xx 單位秒
django連線發生在每次請求時,如果沒有可用連線便主動建立連線,如果限制了連線時間的話。警告
每個執行緒包含自己的資料庫連線,資料庫必須支援至少和工作執行緒一樣多的同步連線;django 預設假設所有資料庫均採用utf-8編碼。支援mysql 5.5+,期望資料庫支援utf-8編碼和事務和參照完整性。有時出現大多數檢視無法訪問資料庫,此時應當試圖減少資料庫保持連線時間,這樣不會有意地維護連線,同時有助於減少資料庫同步連線數;
開發伺服器會為每個處理的連線創立新的執行緒,會使長連線失效;
當django建立乙個連線時會設定適當的引數(取決於被使用的後端),如果使能長連線,這些設定便不會在每個請求重複設定,但是如果你定義了比如連線隔離或時區,就應在每次連線斷開後還原預設配置,強制寫入適當的值或者禁用長連線。
推薦引擎---innodb
mysqldb 原生驅動已被開發支援超過10年(不支援python3);
mysqlclient mysqldb的衍生,支援python3(django mysql推薦api);
mysqlclient 1.3.3+,推薦此api
mysql connector/python 純python驅動(oracle,支援python3),無須mysql客戶端庫和python其他標準庫;
mysql connector/python 1.1.x+
使用django 時區支援,mysql_tzinfo_to_sql載入時區表至mysql資料庫。
sql語句:
create database character set utf8;排序規則
排序規則用於列序控制,可以設定資料庫範圍級別或單獨表/單獨列級別的排序規則,django不提供模型設定排序,可手動修改資料庫表進行修改。
預設utf-8資料庫,mysql採用utf8_general_ci排序規則(預設大小寫不敏感,插入『a』和『a』會視為一樣),如果想區分大小寫,請採用utf8_bin排序規則。
utf8_general_ci 排序快有一些誤差
utf8_unicode_ci 排序稍慢相對準確
連線設定採用優先順序:
options選項name,user,password,host,port
mysql配置
# settings.py
databases = ,
}}# my.cnf
[client]
database = name
user = user
password = password
default-character-set = utf8
設定sql_modestrict_trans_tables/strict_all_tablesdjango 強烈建議啟用strict mode(此模式會將插入時的truncate警告公升級為錯誤,以此來防止資料丟失)
隔離等級isolation level
當執行併發負載時,資料庫會處理不同的回話可能會相互影響。相互影響方式由每個回話的處理隔離等級決定。在資料庫配置檔案options中設定isolation_level,有效的設定值如下:
django 在'read committed'工作好於mysql預設'repeatable read'。
建立表提前設定好資料庫儲存引擎
表名推薦使用小寫
字元域字元域預設為最大255字元,如果使用unique=true將會影響字元域。
textfield 限制
textfield不能標記為 unique=true
小數秒在time和datatime field被支援
要求mysql 5.6.4+
timestamp 列
如果資料庫包含timestamp列,必須設定use_tz = false來避免衝突,如果你使能為true,則inspectdb會對映這些列到datetimefield,mysql和django都將會嘗試從utc到local time轉換這些值。
mysql不支援nowait和skip locked,
故select_for_update() is used with nowait=true or skip_locked=true then a databaseerror will be raised.
django mysql資料庫配置
python 3.7.0 django 2.0 pymysql 0.9.3 一 配置資料庫 django預設資料庫為sqlite 若該專案要使用mysql資料庫,需要更改配置 1 專案下setting.py中新增如下 import pymysql pymysql.install as mysqldb...
資料庫重連
4.2.10 資料庫自動重連 dbcp使用apache的物件池objectpool作為連線池的實現,在構造genericobjectpool時,會生成乙個內嵌類evictor,實現自runnable介面。如果 timebetweenevictionrunsmillis大於0,每過 timebetwe...
Django mysql資料遷移
1.配置資料庫連線 根據自己的資料庫來配置即可 2.在資料庫中新建乙個庫,名稱跟上一步設定的name中的庫名稱一致即可。3.匯入pymysql模組 4.使用models建立表,先建立兩個模型user,group 根據自己的業務需求建立不同的模型即可 如下圖所示 5.在需要用的模型的地方,匯入建立的模...