windows10 -- mysql5.5 + python3.4 + django1.11 +pycharm2016.2 + PyMySQL(DB DRIVER) 环境搭建
环境介绍
2016-07-2513:32:26
name | value | comment |
OS | win10 | 操作系统 |
python | python3.4 | python主程序 |
IDE | pycharm: 201.2 | python IDE集成开发环境 |
框架 | django: 1.11 | web开发框架,类似与Struts(JAVA) |
DB | mysql: 5.5 | (在centos 上使用二进制安装,你可以直接安装在win10上面) ----- 一款nc的开源数据库 |
connector | PyMySQL | python connector |
作者一路飘来的坑
这就是自己探索的代价,一个小问题都可能停滞1天,或者2天,或者一周
但是,这就是探索的乐趣所在
- pycharm 无法创建django project,只能创建pure python
- 因为pycharm的community版本没有,需要下载professional版本,要注册码,自己百度搞定
- python死活连接不上mysql ---- django内置了sqlite,无需安装,直接使用,但是生产环境一般还是使用mysql,所以这个问题必须解决
- 需要再windows上下载一个DBdriver,我的理解就是一个客户端去驱动连接数据库,python不能直接连接,毕竟db认sql语言,不认识python对吧
- 看介绍:可以安装mysqlclient,connector/python,其实都有问题,因为python3.4太新了(20160725),使用pymysql代替
软件下载
- python: python3.4 www.python.org 这个如果都找不到就不要学python了
- pycharm: 2016.2 http://www.jetbrains.com/pycharm/download/#section=windows 这个注意,请下载 professional 版本
- django: 1.11 https://www.djangoproject.com/download/ 可以源码安装,也可以pip 安装
- mysql: 5.5(在centos 上使用二进制安装,你可以直接安装在win10上面)
- connector: PyMySQL git clone https://github.com/PyMySQL/PyMySQL 如果不熟悉git,可以直接打开后面的网址在网页端下载
软件安装
python
下一步,下一步,一下到底,安装位置作者放在了 C:\Python34
pytharm
下一步,下一步,一下到底
django
方式1 将源代码解压,放到C盘下面吧-----win+r-----cmd---cd c:\dj ---- python setup.py
方式2 ---win+r-----cmd-----pip install django=1.9.2 建议安装这个版本(20160725)
mysql5.5
方式1 下载windows版本的installer ,一下到底
方式2 使用centos6.5,然后下载bin版本的安装(作者采用的方式)
PyMySQL
安装方式和django差不多,进入windows的cmd界面,cd到软件解压目录,然后 python setup.py install
django和pymysql都会安装下面的目录
C:\Python34\Lib\site-packages
创建工程
..1 new---new project
建立好的工程目录类似这个样子
这里可以再多建立几个APP
到现在为止基本的矿机已经完成了,恭喜我自己
..2 让django跑起来
点击工具栏的run
然后在本地打开浏览器输入: http://127.0.0.1:8000/admin
没错,你就成功了,这个系统已经跑起来了,并且你看见了django非常强大的自动生成的一个后台管理界面
..3 让django连接上数据库mysql
..3.1 常见数据库的model
class UserInfo(models.Model):
name = models.CharField(max_length=32)
email = models.CharField(max_length=32)
comment = models.CharField(max_length=32)
age = models.IntegerField()
password = models.CharField(max_length=32,default="") # def __str__(self):
# s = {"id": self.id, "name": self.name, "email": self.email}
# return s
def __str__(self):
return self.name
projectname/appname/models.py
..3.2 配置数据库连接
/projectname/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'root',
'PASSWORD': '',
'HOST': '192.168.202.104',
'PORT': '',
}
}
..3.3 初始化安装你的app
注意后面一定要有逗号,app01 and app02 就是作者自己建立的两个app, 我使用app02,稍后你可以看见设置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
'app02',
]
..3.4 在数据库中建表
manage.py这个时候可以登场了
使用pycharm提供的terminal
python manage.py makemigrations
python manage.py migrate
如果一切正常,你已经在数据库中建表格了,如果有意外,你可以在数据库中先建好db,然后使用这两条命令插入表
..3.5 编写代码对数据库进行增删改查,使用ORM
..3.5.1
"""first_django_project URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/dev/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^info/', views.info),
url(r'^home/(\d+)(.*)', views.handle_args),
url(r'^home/', views.home),
url(r'^app01/', include("app01.urls")),
url(r'^app02/', include("app02.urls")), ]
全局的路由系统
"""first_django_project URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/dev/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url,include
from django.contrib import admin
from app02 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^info/', views.info),
url(r'^home/(\d+)(.*)', views.handle_args),
url(r'^home/', views.home),
url(r'^db/add', views.db_add),
url(r'^db/del', views.db_del),
url(r'^db/update', views.db_update),
url(r'^db/select', views.db_select),
url(r'^db/login', views.db_login), ]
/projectname/appname/usrs.py
url会把一个url的请求给到一个view的方法里面
from django.shortcuts import render
# Create your views here.
from django.shortcuts import HttpResponse, redirect
from app02 import models
from first_django_project import settings def home(request):
return HttpResponse("app02.home") def handle_args(args):
pass def info(request):
pass def db_add(request):
one_user = {"name":"dujuan1", "email":"dujuan.foxmail.com", "comment":"this is comment", "age":23}
models.UserInfo.objects.create(**one_user)
return HttpResponse("add ok") def db_del(request):
models.UserInfo.objects.filter(name="dujuan1").delete()
return HttpResponse("del ok") def db_update(request):
models.UserInfo.objects.filter(name="dujuan1").update(age=25)
return HttpResponse("update ok") def db_select(request):
# ret = models.UserInfo(models.UserInfo.objects.all().first())
# return HttpResponse(ret.name + "---" + ret.email + "-----" + ret.comment + "-----" + ret.age + "----" + "select ok")
#add data to databas first
if request.method == "POST":
submit_data = request.POST
print(submit_data,type(submit_data))
models.UserInfo.objects.create(name = submit_data["name"],
email = submit_data["email"],
comment = submit_data["comment"],
age = submit_data["age"]
)
print("insert into ok")
ret_list = models.UserInfo.objects.all()
# 探测是否获得了数据
for line in ret_list:
print(line.name)
print("select ing ... ...")
myrender = render(request, settings.BASE_DIR + "\\templates\\db_select.html", {"li": ret_list})
return HttpResponse(myrender) def db_login(request):
# login_page_fp = open(settings.BASE_DIR + "\\templates\\app02_login.html", "r", encoding="utf-8")
# login_page_str = str(login_page_fp)
# login_page_fp.close()
if request.method == "POST":
print("-----li------request.method == post")
submit_data = request.POST
submit_data_name = submit_data["name"]
submit_data_email = submit_data["email"]
query_data = models.UserInfo.objects.filter(name=submit_data_name)
# print(query_data,type(query_data))
for item in query_data:
print(item,type(item))
print(item.name)
print(item.email)
cur_email = item.email
if cur_email == submit_data_email:
print("----li----authentication success")
data_list = models.UserInfo.objects.all()
ret_render = render(request, settings.BASE_DIR + "\\templates\\db_select.html", {"li": data_list})
return HttpResponse(ret_render) ret_render = render(request, settings.BASE_DIR + "\\templates\\app02_login.html", context=None)
return HttpResponse(ret_render)
/projectname/appnaem/views.py
views会去models里面去取数据
from django.db import models # Create your models here. class UserInfo(models.Model):
name = models.CharField(max_length=32)
email = models.CharField(max_length=32)
comment = models.CharField(max_length=32)
age = models.IntegerField()
password = models.CharField(max_length=32,default="") # def __str__(self):
# s = {"id": self.id, "name": self.name, "email": self.email}
# return s
def __str__(self):
return self.name class Reporter(models.Model):
name = models.CharField(max_length=32) def __str__(self):
return self.name class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=32)
content = models.TextField()
reporter = models.ForeignKey(Reporter) def __str__(self):
return self.headline
/projectname/appname/models.py
views 还回去templates里面那html样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>user info</title>
</head>
<body>
<center>
<table border="">
<thead>
<tr>
<td>name</td>
<td>email</td>
<td>comment</td>
<td>age</td>
</tr>
</thead>
<tbody>
{% for line in li %}
<tr>
<td>{{ line.name }}</td>
<td>{{ line.email }}</td>
<td>{{ line.comment }}</td>
<td>{{ line.age }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<br>
<hr style="height:3px;border:none;border-top:3px double red;" />
<form action="/app02/db/select" method="post">
<table>
<thead>
<tr>
<td>name</td>
<td>value</td>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td>email</td>
<td><input type="text" name="email" value=""></td>
</tr>
<tr>
<td>comment</td>
<td><input type="text" name="comment" value=""></td>
</tr>
<tr>
<td>age</td>
<td><input type="text" name="age" value=""></td>
</tr>
<tr>
<td><input type="submit" name="add" value="add"></td>
</tr>
</tbody>
</table>
</form>
</center>
</body>
</html>
/templates/db_select.html
好了,现在运行吧
在浏览器里面输入
http://127.0.0.1:8000/app02/db/select
后台查出来的数据也是这个
特别感谢
http://www.maiziedu.com/article/8579/ ----- 让我知道了PyMySQL
http://python.usyiyi.cn/django/intro/overview.html ---- dango1.8的中文文档,作者英语不是很好,中英文结合看吧
如果有疑问,可以联系作者
yangliw3@foxmail.com
windows10 -- mysql5.5 + python3.4 + django1.11 +pycharm2016.2 + PyMySQL(DB DRIVER) 环境搭建的更多相关文章
- Python3.7&Django1.11.15 兼容性问题
环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...
- win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required
在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No ...
- vs2017 + Python3.6 +Django1.11 连接mysql数据库
不废话直接来. vs2017创建一个新的python web项目之后默认链接数据库是sqlite.但是我就想连接到Mysql 上面玩,于是开始倒腾了.下面是步骤 1.修改settings.py 文件需 ...
- Python3的桌面程序开发利器:Eric6的环境搭建、使用
本文旨在通过一个简单的demo,介绍基于Python3.PyQT5的环境下开发桌面应用程序的一种方案,当然开发Python的桌面应用程序不止是PyQT 这一种方案,还可以使用Python自带的Tkin ...
- 环境搭建文档——Windows下的Python3环境搭建
前言 背景介绍: 自己用Python开发了一些安卓性能自动化测试的脚本, 但是想要运行这些脚本的话, 本地需要Python的环境. 测试组的同事基本都没有安装Python环境, 于是乎, 我就想直接在 ...
- 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0
目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...
- python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized
有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...
- python3.7环境下创建app,运行Django1.11版本项目报错SyntaxError: Generator expression must be parenthesized
咳咳!!! 今天用命令行创建django项目中的app应用,出现了这样一个错误 这个错误在python3.6版本下安装运行django 1.11版本正常运行,但python3.7版本下运行django ...
- django1.11版本在python3.7中运行还有点兼容性问题.
django1.11版本在python3.7中运行还有点兼容性问题. 出现SyntaxError: Generator expression must be parenthesized这个报错 找到这 ...
随机推荐
- vue学习指南:第十三篇(详细) - Vue的 路由 第三篇 ( 路由的缓存 )
路由的缓存 路由缓存是 Vue组件优化的一个重要方法 为什么实现路由缓存? 为了 组件间 相互切换不会重复加载数据,影响用户体验,我们通常需要将组件的数组实现缓存,当我们点过来,在点的时候会再次发送 ...
- EF模型+MySql问题
1.添加ADO.NET模型不出现MYSQL连接时: a.确认mysql-for-visualstudio-1.2.7.msi是否安装 b.确认.net版本是否为4.6 2.已经选定了连接,但是在下一步 ...
- jQuery捕获
获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元 ...
- linux - 数据库 - Connected to an idle instance
运行 connect /as sysdba; 报错:Connected to an idle instance 原因:配置文件 .bash_profile 中的 ORACLE_HOME 的最后这个 / ...
- 0121 spring-boot-redis的使用
redis是什么呢?redis,属于NoSQL的一种,在互联网时代,起到加速系统的作用. redis是一种内存数据库,支持7种数据类型的存储,性能1S 10w次读写: redis提供的简单的事务保证了 ...
- Python_内置函数和匿名函数
楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...
- 普及C组第三题(8.12)
2304. 光芒 (File IO): input:light.in output:light.out 时间限制: 1000 ms 空间限制: 题目: 输入: 输出: 样例输入 5 1 1 0 1 ...
- 2019-08-04 纪中NOIP模拟B组
T1 [JZOJ3403] 数列变换 题目描述 小X看到堆成山的数列作业十分头疼,希望聪明的你来帮帮他.考虑数列A=[A1,A2,...,An],定义变换f(A,k)=[A2,A3,...,Ak,A1 ...
- day14 find
find命令查找信息补充 查看找文件数据信息: 精确查找: find 路径信息 -type 文件类型 -name "文件名" 模糊查找: find 路径信息 -type 文件类型 ...
- vue-cli的版本查看及vue2.x和vue3.0的区别
链接:https://www.cnblogs.com/wyongz/p/11505048.html 链接2:https://blog.csdn.net/weixin_37745913/article/ ...