1. 简介
Python是一门高级语言,既可以作为脚本语言,又可以作为面向对象编程语言使用,相对于其他低级语言,Python更加简洁、易读、易写。Django是一个高级的Web框架,它基于Python语言开发,遵循MVC(Model-View-Controller)设计模式,被广泛用于开发高质量的Web应用程序。
而本文将介绍Python 3.5+Django 2.2+pymysql+mysql的搭建过程,其中,pymysql是Python中连接MySQL数据库的一个库,用于执行SQL语句和查询结果的处理。
2. 安装Python和Django
2.1 安装Python
要安装Python,首先需要在官网https://www.python.org/downloads/上下载Python 3.5版本的安装包。
下载完成后,运行安装程序,执行默认选项即可。安装完成后,通过以下命令检查Python版本:
python --version
2.2 安装Django
安装Python后,需要安装Django,通过以下命令安装:
pip install Django==2.2
我们选择Django 2.2版本是为了与Python 3.5兼容,如果您使用的是其他版本的Python,则需要选择与之对应的Django版本。
3. 安装pymysql和mysql
3.1 安装pymysql
要使用pymysql,需要先安装pip,通过以下命令安装:
sudo apt-get install python3-pip
安装pip后,便可以通过以下命令安装pymysql:
pip install pymysql
3.2 安装mysql
我们需要在Ubuntu系统上安装mysql-server和mysql-client,通过以下命令安装:
sudo apt-get install mysql-server mysql-client
安装完成后,需要登录mysql,可以通过以下命令登录:
mysql -u root -p
其中,-u选项指定用户名,-p选项表示需要输入密码登录。
此外,在Ubuntu安装MySQL时,默认会对MySQL进行加固处理,使其只能在本机使用,因此需要执行以下命令打开MySQL服务的远程访问:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
将其中的bind-address一行改为以下内容:
bind-address = 0.0.0.0
修改后,保存退出,执行以下命令重启mysql服务:
sudo service mysql restart
4. Django连接mysql数据库
为了连接数据库,需要在Django项目配置文件中设置DATABASES参数,参数内容如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE_NAME', # 数据库名称
'USER': 'DATABASE_USER', # 数据库用户
'PASSWORD': 'DATABASE_PASSWORD', # 数据库密码
'HOST': 'DATABASE_HOST', # 数据库主机地址
'PORT': 'DATABASE_PORT', # 数据库端口
}
}
其中,需要替换以下参数:
DATABASE_NAME:数据库名称。
DATABASE_USER:数据库用户。
DATABASE_PASSWORD:数据库密码。
DATABASE_HOST:数据库主机地址。
DATABASE_PORT:数据库端口。
以上参数都需要根据自己的实际情况进行修改。
5. 示例代码
下面是一个简单的Django程序,实现添加和查询用户的功能。
5.1 创建Django项目和应用
通过以下命令创建Django项目:
django-admin startproject django_mysql
以上命令会在当前路径下创建一个名为django_mysql的Django项目。
然后,进入项目目录,通过以下命令创建应用:
cd django_mysql
python manage.py startapp user
以上命令会在项目目录下创建一个名为user的Django应用程序。
5.2 编写视图函数和HTML模板
在user应用中,创建views.py文件,编写添加用户和查询用户的视图函数:
from django.shortcuts import render
from django.http import HttpResponse
import pymysql
def add_user(request):
# 如果是POST请求,从请求中获取表单数据并插入到数据库中
if request.method == 'POST':
# 获取表单数据
name = request.POST['name']
age = request.POST['age']
gender = request.POST['gender']
# 插入数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
cursor = conn.cursor()
sql = "insert into user(name, age, gender) values('%s', %s, '%s')" % (name, age, gender)
cursor.execute(sql)
conn.commit()
return HttpResponse('添加用户成功')
# 展示添加用户表单
return render(request, 'add_user.html')
def query_user(request):
# 查询所有用户
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
cursor = conn.cursor()
sql = 'select * from user'
cursor.execute(sql)
result = cursor.fetchall()
# 将查询结果传递给HTML模板,展示用户列表
return render(request, 'query_user.html', {'result': result})
在templates目录下,创建add_user.html和query_user.html两个HTML模板。
add_user.html文件内容:
<form method="post" action="">
{% csrf_token %}
姓名: <input type="text" name="name"> <br>
年龄: <input type="text" name="age"> <br>
性别: <input type="text" name="gender"> <br>
<input type="submit" value="提交">
</form>
query_user.html文件内容:
<table>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
{% for row in result %}
<tr>
<td>{{ row.1 }}</td>
<td>{{ row.2 }}</td>
<td>{{ row.3 }}</td>
</tr>
{% endfor %}
</table>
5.3 设计URL路由
在user应用目录下,创建urls.py文件,设计URL路由:
from django.urls import path
from . import views
urlpatterns = [
path('add_user/', views.add_user, name='add_user'),
path('query_user/', views.query_user, name='query_user'),
]
在主程序目录下的urls.py文件中,将上述URL路由引入:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/', include('user.urls')),
]
5.4 启动Django服务器
通过以下命令启动Django服务器:
python manage.py runserver
然后在浏览器中访问http://127.0.0.1:8000/user/add_user/,即可看到添加用户的表单,填写信息并提交即可。
在浏览器中访问http://127.0.0.1:8000/user/query_user/,即可查看所有用户的信息。
6. 总结
本文介绍了Python 3.5+Django 2.2+pymysql+mysql的搭建过程,其中,pymysql是Python中连接MySQL数据库的一个库,用于执行SQL语句和查询结果的处理。
我们在Django项目中,使用了DATABASES参数来设置数据库连接信息,并编写了一个简单的Django程序,实现了添加和查询用户的功能。
如果您需要使用Django开发Web应用程序,并需要连接MySQL数据库,则可以参考本文的方法进行搭建。