注:本文已迁移至CSDN,后续的更新也会在CSDN。

http://blog.csdn.net/houchaoqun_xmu/article/details/53813633

http://blog.csdn.net/houchaoqun_xmu

【原】本文根据实际操作主要介绍了Django框架下MySQL的一些常用操作,核心内容如下:

-------------------------------------------------------------------------------------------------

1. Linux环境下MySQL的安装与配置

2. 【Linux】MySQL在Django框架下的基本操作

3. Django框架下,一些常用的数据库操作(增删改查 - python)

4. 本文相关的一些参考网址

注:本文会根据实践,持续更新文档,如有错误,希望读者指出哈!~

-------------------------------------------------------------------------------------------------

一、Linux环境下MySQL的安装与配置

-- 说明:本文中展示的MySQL是在虚拟机下进行的(参考网址:http://jingyan.baidu.com/article/425e69e6bbc6c7be14fc1640.html

1. 在终端输入【sudo apt-get update】更新仓库;

2. 输入【sudo apt-get install mysql-server mysql-client】--> 回车 --> 输入【y】--> 回车,等待安装。

-- 期间,会弹出窗口让你设置密码,输入密码后,等待安装即可,如下图所示(注,本文由于实践过程中忘记截图,所以使用百度经验的图):

3. 判断是否安装完成:

【方法一】ps -aux | grep mysql    // 查看进程
【方法二】mysql -u root -p // 进入MySQL命令模式

-- 效果图如下所示:

二、【Linux】MySQL在Django框架下的基本操作

-- 在Linux环境下安装MySQL完成后,就可以开始进行一些基本的操作了!

0. 【SSH Secure Shell】本文使用SSH客户端与阿里云服务器进行交互,首先通过SSH连接到服务器的root模式下(输入服务器IP,用户名和密码,其中端口号默认为22)!

1. 进入MySQL命令行模式:(参考网址:https://zhidao.baidu.com/question/202225195.html

   格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL
找到mysql的安装目录,一般可以直接键入命令【mysql -uroot -p】,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、连接到远程主机上的MYSQL
假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
mysql -h10.0.0.1 -uroot -p123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令
exit (回车)

-- 【mysql -uroot -p】本文是直接使用SSH客户端连接的服务器,所以采用上述例1的方式,如下图所示:

2. 创建数据库并查看相关的表(此处创建的数据库与Django项目下setting.py配置的内容相对应):

-- 在MySQL命令行模式下输入【CREATE DATABASE TuringClass_DB CHARACTER SET utf8;】创建数据库 TuringClass_DB;

-- 在Django项目目录下输入【python manage.py syncdb】创建相关的表;(注:此处是在Django项目下建表,还可以在MySQL命令行模式下建表)

-- 在MySQL命令行模式下输入【use TuringClass_DB;】制定当前操作的数据库为 TuringClass_DB;

-- 在MySQL命令行模式下输入【show tables;】查看当前数据库中的所有表;

-- CREATE DATABASE TuringClass_DB;   //
-- CREATE DATABASE TuringClass_DB CHARACTER SET utf8; // 本文选择此方法创建数据库
【注:此处MySQL关键字不区分大小写,其中 TuringClass_DB 对应 setting.py 配置的数据库】

Django项目 setting.py 中MySQL的配置如下所示:

    'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'TuringClass_DB',
'USER': 'XXXXXX',
'PASSWORD': 'XXXXXX', # Setting when installing MySQL
'HOST': '127.0.0.1',
'PORT': '',
}

-- 执行命令后的效果图:

3. 在MySQL命令行模式下建表(参考网址:http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html):

-- 简单的方式:

CREATE TABLE person (
number INT(11),
name VARCHAR(255),
birthday DATE
);

-- 如果表已存在,则使用关键词IF NOT EXISTS可以防止发生错误:

CREATE TABLE IF NOT EXISTS person (
number INT(11),
name VARCHAR(255),
birthday DATE
);

4. 删除数据库(整个数据库):此处操作的数据库对象为 TuringClass_DB

drop database TuringClass_DB;

-- 效果图如下所示:

5. 删除数据库中指定的表(删除多个指定的表)

【格式】drop table tableName1, tableName2;
【例子】drop table app_accounts_turingroletype,app_accounts_turinguser;

-- 效果图如下所示:

6. 查询表的字段信息

【格式】desc 表名称;
【例子】desc app_TuringClass_questionlist;

-- 效果图如下所示:

7. 数据库的表查询【select ....from.... where=】

select * from app_TuringClass_questionlist where QuestionID = 1;

-- 效果图如下所示:

8. 修改数据库中表的结构(这些命令尚未亲测,参考网址:http://blog.csdn.net/lxh090821/article/details/9410943

# 表position增加列test
alter tableposition add(test char(10));
# 表position修改列test
alter tableposition modify test char(20) not null;
# 表position修改列test默认值
alter tableposition alter test set default 'system';
# 表position去掉test默认值
alter tableposition alter test drop default;
# 表position去掉列test
alter tableposition drop column test;
# 表depart_pos删除主键
alter tabledepart_pos drop primary key;
# 表depart_pos增加主键
alter tabledepart_pos add primary key PK_depart_pos (department_id,position_id);

9. 显示当前mysql版本和当前日期

查询时间:select now();
查询当前用户:select user();
查询数据库版本:select version();
查询当前使用的数据库:select database();

-- 效果图如下所示:

三、Django框架下,一些常用的数据库操作(增删改查 - python)【持续更新中...】:

-- 参考网址:http://blog.csdn.net/leiyonglin/article/details/6799428

1. 插入数据:

>>> from books.models import Publisher
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue', city='Berkeley', state_province='CA', country='U.S.A.', website='http://www.apress.com/')
>>> p1.save()

2. 查询数据:

-- 获取指定表的所有数据:

>>> Publisher.objects.all()
[<Publisher: Apress>, <Publisher: O'Reilly>]

-- 获取指定表的单个数据对象:如果结果是多个对象或者没有返回结果则会抛出异常

>>> Publisher.objects.get(name="Apress")
<Publisher: Apress>

3. 条件查询:

Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]

-- 正序排序:相当于 order by name asc

>>> Publisher.objects.order_by("name")
[<Publisher: Apress>, <Publisher: O'Reilly>]

-- 逆序排序:相当于 order by name desc

>>> Publisher.objects.order_by("-name")  

-- 限制返回数据:相当于 limit 1

>>> Publisher.objects.order_by('name')[0]
<Publisher: Apress> _TuringUser = TuringRoleType.objects.get_or_create(RoleTypeID = RoleTypeID, RoleTypeName = RoleTypeName, DeletePermission = DeletePermission, PostPermission = PostPermission, SuperPermission = SuperPermission)[0]

4. 更新数据:

【方法一】
>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
【方法二】
>>> p = Publisher.objects.get(name='Apress') #先查询
>>> p.name = 'Apress Publishing' #更新
>>> p.save() #保存

5. 删除数据:

【方法一】
>>> p = Publisher.objects.get(name="O'Reilly")
>>> p.delete()
【方法二】
>>> Publisher.objects.filter(country='USA').delete()

6. 判断数据是否存在:

if TuringRoleType.objects.filter(RoleTypeID = RoleTypeID).exists():
print "[RoleTypeID] = ",RoleTypeID + ", has been existed!"
else:
print "Table [TuringRoleType] RoleTypeID = ", RoleTypeID

-- 案例1,数据初始化 - 用户类型表

def Population():
AddNewRoleType('admin', '管理员', True, True, True)
AddNewRoleType('student', '学生用户', True, True, False)
AddNewRoleType('tourist', '游客用户', False, False, False) def AddNewRoleType(RoleTypeID, RoleTypeName, DeletePermission, PostPermission, SuperPermission):
if TuringRoleType.objects.filter(RoleTypeID = RoleTypeID).exists():
print "[RoleTypeID] = ",RoleTypeID + ", has been existed!"
else:
print "Table [TuringRoleType] RoleTypeID = ", RoleTypeID
_TuringUser = TuringRoleType.objects.get_or_create(RoleTypeID = RoleTypeID, RoleTypeName = RoleTypeName, DeletePermission = DeletePermission, PostPermission = PostPermission, SuperPermission = SuperPermission)[0]
_TuringUser.save() ### main program
if __name__ == '__main__':
Population()

四、常见问题及其解决方法【持续更新中...】:

1. Django MySQL数据库配置以及管理界面提交中文错误解决

-- 参考网址:http://www.linuxidc.com/Linux/2014-03/97955.htm

2. Python EOL while scanning string literal问题解决方法

-- 本文遇到的问题是因为使用vim在服务器上修改代码时,出现字符串问题,重新上传相关的代码即可!

-- 参考网址:http://www.jb51.net/article/65067.htm

3.

-----------------------------------------------------------------------

参考网址:

1. 【mysql 常用操作】http://blog.csdn.net/lxh090821/article/details/9410943

2. 【mysql创建和删除表】http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html

3. 【mysql索引详解(转)】http://www.cnblogs.com/ggjucheng/archive/2012/11/04/2754128.html

-------------------------------------------------------------

【注】博文由本文经过实践进一步整理,如有问题,还望指出,本人会及时纠正!谢谢^^

--------------------------------------------------------------

MySQL在Django框架下的基本操作(MySQL在Linux下配置)的更多相关文章

  1. 将Windows下的文件同步到Linux下

    需求:把Windows下的某些文件自动传送到Linux指定目录下 实现: 1. Windows下安装 WinSCP工具,并把Liunx服务器信息保存 2. 编写脚本,实现双击工具就把Windows下的 ...

  2. mysql安装和简要操作命令+python基本操作mysql数据库

    mysql数据库是一种关系型数据库管理系统.  一. windows平台安装Mysql数据库. Mysql数据库官网 :https://dev.mysql.com/downloads/windows/ ...

  3. Django框架 之 MTV模型、 基本命令、简单配置

    浏览目录 MTV模型 Django框架前奏 Django基础必备三件套 Djaogo基本命令 MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Te ...

  4. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  5. windows下的c语言和linux 下的c语言以及C标准库和系统API

    1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...

  6. Linux下修改默认字符集--->解决Linux下Java程序种中文文件夹file.isDirectory()判断失败的问题

    一.问题描述: 一个项目中为了生成树状目录,调用了file.listFiles()方法,然后利用file.isDirectory()方法判断是否为目录,该程序在windows下运行无问题,在Linux ...

  7. Windows下war包部署到Linux下Tomcat出现的问题

    最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file.按理说,如果正常,当把war包复制到webapp ...

  8. windos下创建软链接,附Linux下创建软链接

    用过好多次老是忘记: 写在这里忘了就来看下 Windows下(win7) mklink /D D:\phpStudy\WWW\yii\school\teacher\web\uploads\public ...

  9. LINUX下SYN FLOOD攻击及LINUX下SYN攻防简述

    LINUX下SYN攻防战如下 (一)SYN攻击原理 SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费服务器CPU和内存资源.SYN攻击聊了能影响主机外,还可以危害路 ...

随机推荐

  1. andriod的简单用法2

    1.在Activity中使用menu //创建菜单项 public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this ...

  2. Lucene学习笔记: 四,Lucene索引过程分析

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  3. 【恒天云技术分享系列10】OpenStack块存储技术

    原文:http://www.hengtianyun.com/download-show-id-101.html 块存储,简单来说就是提供了块设备存储的接口.用户需要把块存储卷附加到虚拟机(或者裸机)上 ...

  4. [git] 更新到某个指定版本

    [git] 更新到某个指定版本 - Vanquisher - 博客频道 - CSDN.NET     [git] 更新到某个指定版本    2015-09-06 09:30 527人阅读 评论(0) ...

  5. Layout No collapsible

    center 不可折叠 其它的,没有 title 没法折叠  title 使用子控件的

  6. HDU 1312 http://acm.hdu.edu.cn/showproblem.php?pid=1312

    #include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #de ...

  7. codeforces 651B Beautiful Paintings

    B. Beautiful Paintings time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. 转载Repository 和Unit of work的使用说明

    利用Repository and Unit of Work重构项目 文章索引和简介 项目最基础的东西已经结束了,但是现在我们的项目还不健全  不利于测试 重复性代码多   层与层之间耦合性高  不利于 ...

  9. Hibernate的配置

    配置Hibernate 1.在项目中引入Hibernate的Jar包 在 WebContent/WEB-INF/lib 目录下 导入jar包 2.在Java Resources 下创建 hiberna ...

  10. javax.naming.NameNotFoundException

    2015-08-27 09:53:16,463 [localhost-startStop-1] DEBUG [org.springframework.jndi.JndiTemplate] - Look ...