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
總結
以上是生活随笔為你收集整理的MySQL在Django框架下的基本操作(MySQL在Linux下配置)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三个字的游戏网名154个
- 下一篇: CentOS上安装MyCat-MySQL