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

注:本文已遷移至CSDN,後續的更新也會在CSDN。html

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

http://blog.csdn.net/houchaoqun_xmumysql

【原】本文根據實際操做主要介紹了Django框架下MySQL的一些經常使用操做,核心內容以下:linux

-------------------------------------------------------------------------------------------------web

1. Linux環境下MySQL的安裝與配置sql

2. 【Linux】MySQL在Django框架下的基本操做數據庫

3. Django框架下,一些經常使用的數據庫操做(增刪改查 - python)django

4. 本文相關的一些參考網址vim

注:本文會根據實踐,持續更新文檔,若有錯誤,但願讀者指出哈!~服務器

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

1、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命令模式

-- 效果圖以下所示:

2、【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();

-- 效果圖以下所示:

3、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()

4、常見問題及其解決方法【持續更新中...】:

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

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

【注】博文由本文通過實踐進一步整理,若有問題,還望指出,本人會及時糾正!謝謝^^

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

相關文章
相關標籤/搜索