首先django中使用mysql需要mysqlclient庫的支持,windows下需要vs支持,可從http://www.lfd.uci.edu/~gohlke/pythonlibs/ 網站下載對應.whl文件,然后pip安裝。
在django中配置mysql
django中默認sqlite3數據庫,將DATABASES中內容配置如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django', #數據庫名字
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'root'
}
}
之后執行以下語句
python manage.py makemigrations
python manage.py migrate
在django中輸出sql語句
article = Article.objects.all()
print("sql: %s" % article.query)
創建mysql帳號
CREATE USER 用戶名 @'ip' IDENTIFIED BY '密碼'
修改mysql賬號權限
GRANT ALL PRIVILEGES ON . TO 用戶名@ip
第一個*表示數據庫,第二個表示表,*表示全部
創建數據庫
CREATE DATABASE 數據庫名字
DEFAULT CHARSET utf8
COLLATE UTF8_GENERAL_Ci;
創建表
先選擇數據庫
use demo
CREATE TABLE 表名(name varchar(25));
或者
CREATE TABLE 數據庫.表名(name varchar(25));
插入新數據
INSERT INTO 表 (字段1, 字段2) VALUES (值1, 值2);
意為在表的字段1,字段2后面分別插入值1值2.
更新數據
UPDATE 表名字 SET 字段1='字符串', 字段2=數字
WHERE 字段1=值1, 字段2=值2;
把字段分別為值1,值2的改為‘字符串’, 數字
不加where表示把所有字段都改變
刪除數據
DELETE FROM 表名字
WHERE 字段名='字符串' AND 字段名2=數字;
限制返回
SELECT * FROM `blog_article` LIMIT 3 OFFSET 2
SELECT * FROM\ blog_article\
LIMIT 2,3
兩條語句相等,第一句中limit 3 表示取前三個,offset 2表示跳過前兩個。第二句中limit 2,3表示跳過兩個,取前三個。
模糊搜索
q = request.GET.get("q", '')
article = Article.objects.filter(title_contains=q)
與上面django語句相同
SELECT * FROM `blog_article` WHERE `blog_article`.title LIKE BINARY '%搜索內容%' (注意是單引號), %代表任意字符
精確查找
SELECT * FROM `blog_article` WHERE\ blog_article\
.title = '查找內容'
多表聯查
SELECT * FROM `userprofile` INNER JOIN `user` ON (`userprofile.belong_to_id` = `user.id`) WHERE `user`.`username` = `admin`