注:本文已迁移至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. ado.net(class0503)

    ado.net组成 数据提供程序 connection //连接对象 command executeNonQuery //执行增删改 executeScalar //执行查询返回首行首列 execut ...

  2. 网站繁简切换的JS遇到的一个BUG

    公司打算进入台湾市场,最近开发了繁体版本的网站,数据库里的信息全是简体,除了网页上固定的文字手动翻译了,文章内容标题都不是繁体. 于是在网上找了一段比较流行的繁简切换的JS实现了,不过后来却发现,有些 ...

  3. (转载)OC学习篇之---@class关键字的作用以及#include和#import的区别

    前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用 ...

  4. Tkinter教程之Button篇(1)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811298 #Tkinter教程之Button篇(1)#Button功能触发事件'''1.一个 ...

  5. SDN环境搭建(mininet,OVS,ryu安装及命令)

    1.mininet安装与使用 1.1mininet安装 ubuntu 12.04/14.04/14.10      命令行  sudo apt-get install mininet 1.2 mini ...

  6. linux vim用法总结

    1.跳转到指定行 编辑模式下:输入  ngg或nG(n代表行数) 命令模式下:输入  :n(n代表行数) 2.查找命令 命令模式下输入 / 后面加上查找的内容 例如    :/name     (查找 ...

  7. 现代程序设计homework-06

    现代程序设计homework-06 1) 把程序编译通过, 跑起来. 加入了倒退的功能,程序已经能跑起来了(见代码). 不过倒退功能有些bug,不过这是由于原本程序的主逻辑就有点问题(对于不可走的格子 ...

  8. Android问题-打开DelphiXE8与DelphiXE10编译空工程提示“[Exec Error] The command exited with code 1.”

    问题情况:开发了半天的D2007代码,想测试一个安桌程序,发现新建空工程,提示失败. 提示如下 Exec Error] The command PATH C:\Program Files (x86)\ ...

  9. OAuth 2.0介绍学习

    OAuth2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源拥有者和HTTP服务商之间的被批 ...

  10. 斯特灵数 (Stirling数)

    @维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分 ...