Django自定义数据库查询功能(直接通过SQL语句查询)
一、mysql数据库安装配置(windows 7)
这里我使用的mysql5.7的版本,在安装好版本之后需要对mysql进行配置:
a). 打开cmd并进入mysql安装路径
b). 然后运行一下命令:mysqld –initialize-insecure –user=mysql 或者 mysqld –initialize (此时在安装目录下会有一个data目录出现)
c). 在安装包的目录下新建*my.ini文件,然后将以下内容复制到文件中,并对以下内容根据实际情况进行修改*
[mysqld]
port = 3306
basedir=G:\Program Files (x86)\MySQL\MySQL Server 5.7 #需要修改
datadir=G:\Program Files (x86)\MySQL\MySQL Server 5.7\data #需要修改
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
- d). 重启mysql服务:
命令:net stop mysql #停止mysql服务
命令:net start mysql #启动mysql服务
**e):使用mysql -uroot -p(跟设置的密码) 登录mysql
f). 登录进入后重置密码,命令如下:
update mysql.user set authentication_string=password(‘123456’),password_expired=’N’ where user=’root’;
(注意:1. 如果漏掉了mysql,应执行下use mysql;切换到该数据库下,应该user表在这个数据库下
2. 修改密码并修改过时策略(字段名和mysql 5.6有些不同,5.6的命令为:update mysql.user set password = password('newpwd'),password_expired='N' where user = 'root';)
- g).– 开启远程连接权限
grant all on . to root@’%’ identified by ‘newpwd’ with grant option;
flush privileges;
二、django配置:
在我们项目中的settings.py文件,并配置相关项
内容如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #此项不变
'NAME': 'blog', #设置的数据库名称
'USER': 'root', #mysql 的登录用户名
'PASSWORD': 'root', #mysql的登录密码
'HOST': '', #默认为127.0.0.1
'PORT': '', #默认端口:3306
'charset': 'utf8',
}
}
MySQLdb在连接数据库时默认使用的MySQLdb驱动,因此将在所创建的项目文件下的_init.py中加入以下内容:
import pymysql
pymysql.install_as_MySQLdb()
到此数据库配置已大公告成啦。接下来就是自定义的sql查询了。
三、mysql自定义查询
1. 配置好前面两项目之后,我们就开始编写mysql自定义
from django.db import connection
import os
import sys
projectpath = '/django/myweb'
if projectpath not in sys.path: sys.path.append(projectpath)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myweb.settings'
def sql_Result(sql):
cur = connection.cursor()
cur.execute(sql)
result = cur.fetchone()
return result
注:该处return result返回类型为 tulpe类型
在使用过程中调用该方法:
from blog.commom.configDB import * #引入
ret_Name = sql_Result('select name from blog_user where email="{}"'.format('gggg@new.com'))[0]
print("mysql查询结果:{}".format(ret_Name))
查询结果:
后面在使用过程中只需要调用该方法就可以;