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的子類,用於嘗試調用不支持的功能。 |