Python+Django+SAE系列教程12-----配置MySQL数据库
由于SAE上支持的是Mysql,首先我们要在本地配置一个Mysql的环境 ,我在网上找到MySQL-python-1.2.4b4.win32-py2.7.exe,并双击 安装
选择典型安装
安装结束后。会弹出配置数据库的界面 :
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVtZW5nMTk4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
然后输数据管理员password:
最后是执行服务。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVtZW5nMTk4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
这个过程并不复杂,安装完毕Mysql以后。系统会启动数据库服务,因为Mysql是用命令行控制的。想我这样懒的 人还是须要借助一个可视化 工具来管理,我选择MySQL-Front。
在网上找到MySQL_Front_Setup.1765185107.exe,双击安装就能够了。安装完打开软件:
这时我们会看到已经有的几个数据库:
我要开发程序首先。我们要建立一个数据库(右键 新建数据库),起名字为Mytestdb:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVtZW5nMTk4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
OK。这样我们就建立了一个空的数据库了,我先不着急在这里建表和表的关系。
我们打算使用Django的模型的方式来建立:
首先我们改动一下
setting.py,好让Django认识我们新建立的数据库:
ADMINS = (
('hemeng80', 'hemeng80@126.com'),
) MANAGERS = ADMINS from os import environ
debug = not environ.get("APP_NAME", "")
if debug:
#LOCAL
db_name = "MyTestDB"
name = "root"
pwd = "123456"
host = "127.0.0.1"
port = "3306"
else:
#SAE
import sae.const
db_name = sae.const.MYSQL_DB
name = sae.const.MYSQL_USER
pwd = sae.const.MYSQL_PASS
host = sae.const.MYSQL_HOST
port = sae.const.MYSQL_PORT
host_s = sae.const.MYSQL_HOST_S DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': db_name, # Or path to database file if using sqlite3.
'USER': name, # Not used with sqlite3.
'PASSWORD': pwd, # Not used with sqlite3.
'HOST': host, # Set to empty string for localhost. Not used with sqlite3.
'PORT': port, # Set to empty string for default. Not used with sqlite3.
}
}
上面的内容不须要多解释,你就会能明确。一种是在sae环境下的链接,一种是在本地的链接。
这时我们须要使用Django,生成一个模型。在命令行模式输入:
python manage.py startapp person
这个命令并没有输出什么。它仅仅在 mysite 的文件夹里创建了一个 books 文件夹。
让我们来看看这个文件夹的内容:
person/
__init__.py
models.py
tests.py
views.py
这个文件夹包括了这个app的模型和视图。
使用你最喜欢的文本编辑器查看一下 models.py 和 views.py 文件的内容。 它们都是空的。除了 models.py 里有一个 import。
这就是你Django app的基础。
眼下我们的文件夹结构是这种:
接下来我们来
编辑 person的models.py,来定义我们的数据模型:
models.py:
from django.db import models # Create your models here. class ClassRoom(models.Model):
name = models.CharField(max_length=30)
tutor = models.CharField(max_length=30) class Student(models.Model):
name = models.CharField(max_length=30)
sex = models.CharField(max_length=5)
age = models.IntegerField()
state_province = models.CharField(max_length=30)
qq = models.IntegerField()
classroom = models.ForeignKey(ClassRoom)
上面的数据模型比較简单,你一看就能明确,须要注意外键关系是这样建立的:
classroom = models.ForeignKey(ClassRoom)
为了让django认识我们新加入的App。还须要在setting.py中改动一些内容:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'person',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
这时,我们能够进入命令行程序,来检查一下我们的app是否正确:
python manage.py validate
假设没有问题的话,我们就能够使用这个模型来建立数据库中的表和表的关系了 ,命令行进入我们之前建立好的路径。输入:
python manage.py sqlall person
这样自己主动生成了,数据模型的建立表的SQl,语句,我们在mysql-front里面运行就能够自己主动创建数据库中的表了:
假设我们复制粘贴的话,这里面有一点问题。当中语句长的换行了。会运行不通过的,我们改动一下即可了:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVtZW5nMTk4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在打开数据库,刷新看看,是不是我们表都自己主动创建了?
我们注意到Django自己主动创建了一个自增的主键!
既然我们在sae中开发。那么以下我就来看看怎样在sae中创建一个Mysql的数据库。加入表的。找到sae的Mysql服务。点击初始化:
然后管理Mysql:
在这个里面运行下面我们刚才复制的sql语句创建表 :
这样我们就在本地和sae中创建了同样的表,并加入了响应的app,下一步就是怎样对这个表进行最主要的操作了。
Python+Django+SAE系列教程12-----配置MySQL数据库的更多相关文章
- Python+Django+SAE系列教程17-----authauth (认证与授权)系统1
通过session,我们能够在多次浏览器请求中保持数据,接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们须要认证. 当然了,Django 也提供了 ...
- Python+Django+SAE系列教程6-----本地配置Django
前五章.我们介绍了Python的语法,本章開始介绍Django. Python的Web框架有非常多,有Django.web2py.tornado.web.py等.我们这里选 则Django.至于这些框 ...
- Python+Django+SAE系列教程11-----request/pose/get/表单
表单request,post,get 首先我们来看看Request对象,在这个对象中包括了一些实用的信息,学过B/S开发的人来说这并不陌生,我们来看看在Django中是怎样实现的: 属性/方法 说明 ...
- Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
一个Django视图函数 必须 接受一个HttpRequest 实例作为它的第一个參数 返回一个HttpResponse 实例 从一个视图返回一个非HTML 内容的关键是在构造一个 HttpRespo ...
- Python+Django+SAE系列教程10-----Django模板
在本章中,我们开始模板,在前面的章节,您可能已经注意到,我们回到文本的方式有点特别的示例视图. 那.HTML直接在硬编码 Python 其中代码. 这的确是一个小BT. def current_dat ...
- Python+Django+SAE系列教程9-----Django的视图和URL
第三.四.五章介绍的就是Django中MVC的视图.模板.模型了. 首先来看视图(view),在用Django生成的站点目录中,创建一个view.py文件,这个文件開始是空的.然后我们输入下面内容: ...
- Python+Django+SAE系列教程16-----cookie&session
本章我们来解说cookie和session ,这两个东西相信大家一定不陌生,概念就不多讲了,我们直接来看其使用方法,首先是cookie,我们在view中加入三个视图,一个是显示cookie的,一个是设 ...
- Python+Django+SAE系列教程13-----MySQL记录的添\删\改
建立了数据库后,我们就来做一个简单的表(person_classroom)的加入.删除.改动的操作. 首先我们建立一个加入的页面的模板Classroom_Add.html(加入的表单)并把它放在Bid ...
- Python+Django+SAE系列教程14-----使表单更安全
还记得我们上一章提到过的加入页面吗? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVtZW5nMTk4MA==/font/5a6L5L2T/fonts ...
随机推荐
- 在Eclipse中开发C/C++项目
摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...
- Android HandlerThread详解
概述 Android HandlerThread使用,自带Looper消息循环的快捷类. 详细 代码下载:http://www.demodashi.com/demo/10628.html 原文地址: ...
- nginx反向代理proxy_set_header自定义header头无效
公司使用nginx作为负载均衡,有时候需要自定义header头发送给后端的真实服务器. 想过去应该是非常的简单的事情. 例子如下: 设置代理服务器ip头 1 proxy_set_header X- ...
- 在win7/8下搭建简易的无线平台
资料:http://www.cnblogs.com/KeenLeung/p/3482073.html http://www.cnblogs.com/KeenLeung/p/3481998.html 其 ...
- 教程 | 一文入门Python数据分析库Pandas
首先要给那些不熟悉 Pandas 的人简单介绍一下,Pandas 是 Python 生态系统中最流行的数据分析库.它能够完成许多任务,包括: 读/写不同格式的数据 选择数据的子集 跨行/列计算 寻找并 ...
- Oracle实例
ORA-12505 Listener refused the connection with following error:ORA-12505,TNS:listener 确定这是连接数据库的SID错 ...
- JS定义类及对象
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Obje ...
- 一、springMVC、freemarker页面半自动静态化
说明:刚刚接到公司的通知,实现(半自动化),即通过参数控制是否需要静态化页面(哪里我说错了,勿喷!谢谢) 1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件 2,自由控制某 ...
- Openresty增加waf配置
Openresty增加waf配置 1. Ngx lua waf 说明 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止Apach ...
- Ibatis基础知识:#与$的差别
背景 Ibatis是一个轻量级.非侵入式的持久层框架,适用于范围较广.较轻便--当然,不管J2EE中哪一个持久层框架,都会基于JDBC(不细究JNDI方式).我们在SqlMap中编写SQL,利用各种S ...