Import sqlite3/pymysql
創(chuàng)建數(shù)據(jù)庫(kù)/打開數(shù)據(jù)庫(kù)
Con=sqlite3.connect('數(shù)據(jù)庫(kù)文件.db')
建立游標(biāo)
Cur=con.cursor()
數(shù)據(jù)庫(kù)操作相關(guān)sql語(yǔ)句
Sql='''create table if not exists 表名(數(shù)據(jù)項(xiàng)名 數(shù)據(jù)類型integer/text 限制類型primary key/unique)
執(zhí)行sql語(yǔ)句
Cur.excute(sql)
python 操作MYSQL數(shù)據(jù)庫(kù)主要有兩種方式:
使用原生模塊:pymysql
ORM框架:SQLAchemy
一诡必、pymysql
1.1下載安裝模塊
1 第一種:cmd下:執(zhí)行命令下載安裝:pip3 install pymysql
2 第二種:IDE下pycharm python環(huán)境路徑下添加模塊
1.2使用操作
1 #導(dǎo)入模塊
2 import pymysql
3
4 #建立連接通道笑撞,建立連接填入(連接數(shù)據(jù)庫(kù)的IP地址,端口號(hào)更舞,用戶名刽射,密碼袜爪,要操作的數(shù)據(jù)庫(kù)炸裆,字符編碼)
5 conn = pymysql.connect(
6 host="",
7 port="",
8 user='',
9 password='',
10 database=""
11 charset="",
12 )
13
14 # 創(chuàng)建游標(biāo),操作設(shè)置為字典類型碱妆,返回結(jié)果為字典格式肉盹!不寫默認(rèn)是元組格式!
15 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
16
17 #操作數(shù)據(jù)庫(kù)的sql語(yǔ)句
18 sql=""
19
20 # 向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)疹尾,在方法內(nèi)部進(jìn)行拼接I先獭V韪亍!
21
22 #向數(shù)據(jù)庫(kù)發(fā)送操作單條操作指令
23 # 格式化輸入的值可以單個(gè)按順序傳入 或是寫成列表 (注意 順序和位置)
24 r = cursor.execute(sql,v1,v2……)
25
26 r = cursor.execute(sql,args)
27 #r 代表接收返回受影響的行數(shù)(數(shù)字)及執(zhí)行這一條sql語(yǔ)句窍蓝,數(shù)據(jù)庫(kù)中有多少行受到了影響萌衬。
28 #sql 指上邊寫的sql語(yǔ)句
29 #args 指要給sql語(yǔ)句中傳的參數(shù)
30 sql 語(yǔ)句可以不傳值 及為空 []
31 sql 語(yǔ)句可以傳一個(gè)值 及 [v1,]
32 sql 語(yǔ)句可以傳多值 及 [v1,v2,v3……]
33
34 #向數(shù)據(jù)庫(kù)發(fā)送操作多條數(shù)據(jù)指令 args=[(v1,s1),(v2,s2),(v3,s3)]
35 r = cursor.executemany(sql,[('egon','sb'),('laoyao','BS')])
36
37 #數(shù)據(jù)庫(kù)有四種操作:增刪改查!
38 # 執(zhí)行查操作的時(shí)候就得接收從數(shù)據(jù)庫(kù)返回的數(shù)據(jù)它抱!
39 #執(zhí)行增刪改操作的時(shí)候秕豫,就需要像數(shù)據(jù)庫(kù)提交數(shù)據(jù)!
40
41 #查操作:(接收的數(shù)據(jù)格式由創(chuàng)建的游標(biāo)樣式?jīng)Q定9坌睢)
42 #接收數(shù)據(jù)有三種方式:
43
44 res = cursor.fetchone() #接收返回的第一行數(shù)據(jù)
45
46 ret = cursor.fetchmany(n) #接收返回的n行數(shù)據(jù)
47
48 req = cursor.fetchall() #接收返回的說(shuō)有數(shù)據(jù)
49
50 #注:在fetch數(shù)據(jù)時(shí)按照順序進(jìn)行混移,可以使用cursor.scroll(num,mode)來(lái)移動(dòng)游標(biāo)位置,如:
51
52 cursor.scroll(1,mode='relative') # 相對(duì)當(dāng)前位置移動(dòng)
53 cursor.scroll(2,mode='absolute') # 相對(duì)絕對(duì)位置移動(dòng)
54
55 #增刪改操作:
56 #寫完發(fā)送操作語(yǔ)句之后侮穿,就需要把更改的數(shù)據(jù)提交歌径,不然數(shù)據(jù)庫(kù)無(wú)法完成新建或是修改操作
57
58 conn.commit() #提交
59
60 #注:此處有個(gè)獲取新建數(shù)據(jù)自增ID的操作(只能拿到最后那一行的id數(shù))
61 #執(zhí)行增加語(yǔ)句,并提交之后亲茅,可以獲取到
62 new_id=cursor.lastrowid
63 print(new_id)
64
65 #操作完成之后横堡,就需要關(guān)閉連接
66 cursor.close() #關(guān)閉游標(biāo)
67 conn.close() #關(guān)閉連接
操作總結(jié):
1氛悬、重中之重久橙,一定要注意sql注入的問題B墒省!袭祟!