Django-Pymysql基礎

Django-Pymysql基礎

Pymysql是用於Python和Mysql數據庫交互的一個驅動(而且是一個純python庫)

1.安裝

  • 在terminal終端中輸入 pip install pymysql

2.主要方法

2.1pymysql.connect()參數說明:(連接數據庫時需要添加的參數)

參數名 含義
host(str) MySQL服務器地址
port(int) MySQL服務器端口號
user(str) 用戶名
passwd(str) 密碼
db(str) 數據庫名稱
charset(str) 連接編碼

2.2connect()對象支持的方法:

參數名 含義
cursor() 使用該連接創建並返回遊標
commit() 提交當前事務
rollback() 回滾當前事務
close() 關閉連接

2.3cursor對象支持的方法:

參數名 含義
execute(op) 執行一個數據庫的查詢命令
fetchone() 取得結果集的下一行
fetchmany(size) 獲取結果集的下幾行
fetchall() 獲取結果集中的所有行
rowcount() 返回數據條數或影響行數
close() 關閉遊標對象

3.一個實例

先在mysql中創建一個用於操作的庫和表

create database text;
use text;
create table text1(id  int(11) primary key, name varchar(11)  not null, add varchar(20) ,tel int(11) )

使用python腳本實現對mysql表中數據的增刪改查:

import pymysql
# 連接數據庫
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='123456',
    db='text',
    charset='utf8'
)


# 獲取遊標
cursor = connect.cursor()


# 插入數據
sql = "insert into text1 (id, name, add,tel) VALUES ( %s, '%s', '%s', %s )"
data = (1, '成甲', '杭州', '123456')
cursor.execute(sql % data)
connect.commit()  
#注意操作進行完之後記得提交事務
print('插入成功')


# 修改數據
sql = "updata text1 set name ='成已' WHERE name = '成甲' "
cursor.execute(sql)
connect.commit()
print('修改成功')


# 查詢數據
sql = "selete name from text1 where name = '%s' "
data = ('成已',)
cursor.execute(sql % data)
#返回查找到的所有
print(cursor.fetchall())


# 刪除數據
sql = "delete from text1 where id = %s "
data = ( 1)
cursor.execute(sql % data)
connect.commit()
print('刪除成功')


# 關閉連接
cursor.close()
connect.close()

4.其他

出現缺少mysqlclient

安裝mysql依賴包:
pip install -i https://pypi.douban.com/simple mysqlclient
#如果載不了,換源嘗試一下
  阿里雲 http://mirrors.aliyun.com/pypi/simple/ 
  中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 
  豆瓣(douban) http://pypi.douban.com/simple/ 
  清華大學 https://pypi.tuna.tsinghua.edu.cn/simple/ 
如安裝該包出錯。下載新包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
import pymysql
import PyMySql 是不一樣的
  • 在setting中改變database
DATABASES ={
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'student',  #注意了,這個數據庫名django不能創建,你自己需要先創建數據庫
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

創建表

create_table = """create table `text` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""
 
cursor.execute(create_table)
db.close()

DB API定義了每個數據庫模塊中必須存在的許多錯誤。下表列出了這些異常和錯誤 :

編號 異常 描述
1 Warning 用於非致命問題,是StandardError的子類。
2 Error 錯誤的基類,是StandardError的子類。
3 InterfaceError 用於數據庫模塊中的錯誤,但不是數據庫本身,是Error的子類。
4 DatabaseError 用於數據庫中的錯誤,是Error的子類。
5 DataError DatabaseError的子類引用數據中的錯誤。
6 OperationalError DatabaseError的子類,涉及如丟失與數據庫的連接等錯誤。 這些錯誤通常不在Python腳本程序的控制之內。
7 IntegrityError DatabaseError 子類錯誤,可能會損害關係完整性,例如唯一性約束和外鍵。
8 InternalError DatabaseError的子類,指的是數據庫模塊內部的錯誤,例如遊標不再活動。
9 ProgrammingError DatabaseError的子類,它引用錯誤,如錯誤的表名和其他安全。
10 NotSupportedError DatabaseError的子類,用於嘗試調用不支持的功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章