MySQL在Django框架下的基本操作(MySQL在Linux下配置)

注:本文已迁移至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': '3306',}

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

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

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

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

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

转载于:https://www.cnblogs.com/XMU-hcq/p/6184414.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Clean Sheet – Windows 10的人体工程学Eclipse主题

Clean Sheet是适用于Windows 10的符合人体工程学的Eclipse主题。它基于干净&#xff0c;低眩光的外观和感觉&#xff0c;旨在减轻视觉疲劳和眼睛疲劳。 它融合了均衡的颜色选择&#xff0c;可以突出谐波语法并注重可读性。 除自定义滚动条外&#xff0c;它还努力满足现代美学要…

CentOS上安装MyCat-MySQL

1、安装JDK&#xff0c;要求JDK7以上。 2、下载MyCat&#xff0c;地址。 3、解压Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz&#xff0c;到usr/local/Mycat目录下。 4、添加用户Mycat。 [rootlocalhost Desktop]# useradd Mycat [rootlocalhost Desktop]# passwd M…

Java中的Redis的思维导图_Redis思维导图

常见相关问题Redis 有哪些功能&#xff1f;数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列Redis 为什么是单线程的&#xff1f;因为 cpu 不是 Redis 的瓶颈&#xff0c;Redis 的瓶颈最有可能是机器内存或者网络带宽。既然单线程容易实现&#xff0c;而且 cpu 又…

在Java EE应用程序中实现自动重试

最初&#xff0c;我想将此博客称为“ 具有拦截器驱动的重试策略的灵活超时 ”&#xff0c;但后来我认为它太“繁重”。 该声明以及修改后的标题应该&#xff08;希望&#xff09;使您了解此帖子可能谈论的内容;-) 触发 这篇文章主要由我在较早的一篇文章中收到的评论/问题之一…

2016-12-17 新浪博客服务器挂掉了,所有博客页面都无法打开

今天&#xff08;2016-12-17 10:20&#xff09;早晨从百度上检索到一篇新浪博客文章&#xff0c;点进去之后显示无法访问此网址&#xff0c;如下截图 去新浪博客主页看了看&#xff0c;主页是可以打开的 但是点进去任何一篇文章&#xff0c;都无法打开此页面 应该是新浪博客的服…

php版本7历史,php的版本发展历史(1995-2020)

PHP一直作为Web开发中的统治力量而存在&#xff0c;在WEB服务端开发领域&#xff0c;全球份额始终保持在78%以上。PHP快速&#xff0c;非常强大&#xff0c;生态好&#xff0c;而且免费&#xff0c;是一个为WEB而生的编程语言&#xff0c;自从诞生起PHP就被大多数开发者称为世界…

netbeans7.4_NetBeans 7.2 beta:更快,更有用

netbeans7.4NetBeans 7.2的beta版本引起了极大的兴奋。 在本文中&#xff0c;我将简要介绍一下此版本令人兴奋的原因&#xff08;包括更好的性能&#xff0c;提供更多的提示以及集成FindBugs&#xff09;。 NetBeans 7.2 beta在典型的下载捆绑软件中可用&#xff0c;从较小的Ja…

C-Free 5.0编译失败问题解决办法

解决关于C-Free 5.0编译时提示错误&#xff1a;[Error] undefined reference to __dyn_tls_init_callback 解决办法&#xff1a; 因为错误提示的路径是C:\MinGW\..... 首先想到的是编译器出问题了&#xff0c;因为我在安装完C-Free 5.0后&#xff0c;重新装过MinGW编译器&#…

用Cucumber JVM编写BDD测试

Cucumber JVM是编写BDD测试的出色工具。在本文中&#xff0c;我想对Cucumber JVM的BDD进行介绍。 让我们开始吧… 什么是BDD&#xff1f; 简而言之&#xff0c;BDD试图解决“通过示例理解需求”的问题 BDD工具 有许多用于BDD的工具&#xff0c;有趣的是&#xff0c;您可以在…

计算器界面网格布局java,安卓案例:网格布局实现计算器界面

安卓案例&#xff1a;网格布局实现计算器界面一、网格布局(GridLayout)GridLayout布局使用虚细线将布局划分为行、列和单元格&#xff0c;也支持一个控件在行、列上都有交错排列。(一)继承关系图(二)常用属性1、针对布局的属性(1)rowCount&#xff1a;行数(2)columnCount&#…

如何让多文本内容只显示一行,其余用省略号来显示

在此需要用到三个属性配合使用&#xff1a; overflow: hidden;/*超出部分隐藏*/white-space: nowrap;/*不换行*/text-overflow:ellipsis;/*超出部分省略号显示*/实例&#xff1a;<p> 兴高采烈的破蛹 重获新生的冲动 寻找爱情世界 美梦  既然不是毛毛虫 就要壮烈的扑火 …

php正则替换p闭合标签,php正则替换标签的实现方法

php正则替换标签的实现方法&#xff1a;首先通过“strip_tags”函数剥去字符串中的HTML标签&#xff1b;然后利用正则表达式替换标签&#xff0c;代码语句如“pregreplace("/s/","",strpregreplace("/s/","")”。推荐&#xff1a;《PH…

POJ1201 区间

题目大意&#xff1a; 给定n个整数区间[ai,bi]和n个整数ci,求一个最小集合Z&#xff0c;满足|Z∩[ai,bi]|>ci(Z里边在闭区间[ai,bi]的个数不小于ci)。 多组数据&#xff1a; n&#xff08;1<n<50000&#xff09;区间的个数 n行&#xff1a; ai bi ci(0<ai<bi<…

vue.js 2.x 能否设置某个组件不被keep-alive 的解决方案

开发项目的时候&#xff0c;使用的是 vue 2.x 版本 搭配路由切换 vue-router &#xff0c;但是很多时候有些页面需要被缓存&#xff0c;有些页面不需要缓存&#xff0c;那么该如何进行一个处理 这里我使用了一个方案来解决这个问题 : 首先在入口页面进行全部缓存标签 即 <ke…

matlab 次坐标轴 标注,matlab标注坐标轴

matlab绘图如何添加图例/坐标轴刻度像这个图里的 那样的图例如何添加 还有坐标轴的刻度如何用像上图的序号 首先打开电脑上的“matlab”软件&#xff0c;主界面如下图所示&#xff0c;箭头处输入代码即可运行。下面输入代码绘制图像&#xff0c;命令行代码如下图所示。点击ente…

JQUERY操作html--获取和设置内容、属性、回调函数

一&#xff1a;jQuery - 获取内容和属性 1.获得内容 - text()、html() 以及 val() text() - 返回所选元素的文本内容 html() - 返回所选元素的内容&#xff08;包括 HTML 标记&#xff09; <script type"text/javascript" src"jquery-1.11.2.min.js">…

可视化Java 9模块关系

正如我在之前的文章中所述 &#xff0c;我已经在Java 9 Jigsaw构建上运行Eclipse Neon了一段时间&#xff0c;并且没有任何问题。 我在周末花费了几个小时来修改一些模块化工具的想法。 我为Eclipse Neon写了一个小插件&#xff0c;可视化了各个模块之间的连接。 现在的实现…

String Start!

(1)Ransom Note 解题思路&#xff1a; 题目叫做Ransom Note&#xff0c;勒索信。勒索信&#xff0c;为了不暴露字迹&#xff0c;就从杂志上搜索各个需要的字母&#xff0c;组成单词来表达的意思。这样来说&#xff0c;题目也就清晰了&#xff0c;判断杂志上的字是否能够组成勒索…

java 多线程写缓存,Java多线程_缓存对齐

1.什么是缓存对齐当前的电脑中&#xff0c;数据存储在磁盘上&#xff0c;可以断电保存&#xff0c;但是读取效率较低。不断电的情况下&#xff0c;数据可以在内存中存储&#xff0c;相对硬盘效率差不多是磁盘的一万倍左右。但是运算时&#xff0c;速度最快的是直接缓存在CPU中的…

ArcGIS Server SOE开发之奇怪异常:

添加之后结果显示如下:fjsontokenezkBvir0Tj5q31UEst7pTFPwrwocmHklCajKeh-xXM91qWdBXDuQMmtGcaHaaXCJ 具体如下: 该SOE扩展在另一台机器上测试时可以正常添加,不知道为什么,在此台机器上添加时就出现如下异常. 请教群里大神,大神建议换个浏览器试试,换成IE在添加扩展,竟然成功…