首先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`