第五課 資料庫之mysql
來自專欄 3個月python學習筆記
資料庫簡介
- 資料庫系統解決的問題:持久化存儲,優化讀寫,保證數據的有效性
- 當前使用的資料庫,主要分為兩類
- 文檔型,如sqlite,就是一個文件,通過對文件的複製完成資料庫的複製
- 服務型,如mysql、postgre,數據存儲在一個物理文件中,但是需要使用終端以tcp/ip協議連接,進行資料庫的讀寫操作
E-R模型
三範式
它粗略地理解為一張數據表的表結構所符合的某種設計標準的級別。
1NF的定義為:符合1NF的關係中的每個屬性都不可再分。
規範被稱為範式
- 第一範式(1NF):列不可拆分
- 第二範式(2NF):唯一標識
- 第三範式(3NF):引用主鍵
- 說明:後一個範式,都是在前一個範式的基礎上建立的
安裝及密碼問題
ubuntu 解決「無法獲得鎖 /var/lib/dpkg/lock -open (11:資源暫時不可用)」的方法
強制解鎖,命令
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
mysql 啟動了才能登陸mysql伺服器哈,資料庫都是這樣
root root
啟動 service mysql start 停止 service mysql stop 重啟service mysql restart
外面 mysql -hip地址 -uroot -p
如下命令進入MySQL服務:
mysql -uroot -p root
安裝配置:Ubuntu 16.04下安裝MySQL
密碼問題:ubuntu安裝mysql 時未提示輸入密碼 - CSDN博客
mysql與python交互
在文件中引入模塊 import Mysqldb
以後代碼全轉linux,終於知道windows為何不方便了。
封裝代碼
#encoding=utf8import MySQLdbclass MysqlHelper(): def __init__(self,host,port,db,user,passwd,charset=utf8): self.host=host self.port=port self.db=db self.user=user self.passwd=passwd self.charset=charset def connect(self): self.conn=MySQLdb.connect(host=self.host,port=self.port,db=self.db,user=self.user,passwd=self.passwd,charset=self.charset) self.cursor=self.conn.cursor() def close(self): self.cursor.close() self.conn.close() def get_one(self,sql,params=()): result=None try: self.connect() self.cursor.execute(sql, params) result = self.cursor.fetchone() self.close() except Exception, e: print e.message return result def get_all(self,sql,params=()): list=() try: self.connect() self.cursor.execute(sql,params) list=self.cursor.fetchall() self.close() except Exception,e: print e.message return list def insert(self,sql,params=()): return self.__edit(sql,params) def update(self, sql, params=()): return self.__edit(sql, params) def delete(self, sql, params=()): return self.__edit(sql, params) def __edit(self,sql,params): count=0 try: self.connect() count=self.cursor.execute(sql,params) self.conn.commit() self.close() except Exception,e: print e.message return count
實例:用戶登錄
創建用戶表userinfos
- 表結構如下
- id
- uname
- upwd
- isdelete
- 注意:需要對密碼進行加密
推薦閱讀:
※Sqli labs系列-less-11&12 post注入篇
※SQL筆記
※什麼是最好的oracle sql 開發工具?