用python操作數據庫,特別是做性能測試造存量數據時特別簡單方便,比存儲過程方便多了。
連接數據庫
前提:安裝mysql、python,參考:https://www.cnblogs.com/UncleYong/p/10530261.html
數據庫qzcsjb的test表中初始化的數據:
安裝pymysql模塊,pip install pymysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor()
# 執行sql語句
sql
=
'select * from test where name = "%s" and id="%s"'
%
(
'qzcsbj1'
,
'1'
)
rows
=
cursor.execute(sql)
# 返回結果是受影響的行數
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
# 判斷是否連接成功
if
rows >
=
0
:
print
(
'連接數據庫成功'
)
else
:
print
(
'連接數據庫失敗'
)
|
增加數據
單條
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor()
# 執行sql語句
sql
=
'insert into test(id,name) values(%s,%s)'
rows
=
cursor.execute(sql,(
'4'
,
'qzcsbj4'
))
# 提交
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
|
多條
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor()
# 執行sql語句
sql
=
'insert into test(id,name) values(%s,%s)'
rows
=
cursor.executemany(sql,[(
'5'
,
'qzcsbj5'
),(
'6'
,
'qzcsbj6'
),(
'7'
,
'qzcsbj7'
)])
# 提交
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
|
大批量新增
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
values
=
[]
for
i
in
range
(
100
,
201
):
values.append((i,
'qzcsbj'
+
str
(i)))
sql
=
'insert into test(id,name) values(%s,%s)'
rows
=
cursor.executemany(sql,values)
# 提交
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
|
修改數據
把上面大批量新增的數據刪除,delete from test where id>=100;
單條
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor()
# 執行sql語句
sql
=
'update test set name = %s where id = %s'
rows
=
cursor.execute(sql,(
'qzcsbj'
,
'7'
))
# 提交
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
|
多條
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import
pymysql
# 建立數據庫連接
conn
=
pymysql.connect(
host
=
'192.168.168.168'
,
port
=
3306
,
user
=
'root'
,
password
=
'mysql'
,
db
=
'qzcsbj'
,
charset
=
'utf8'
)
# 獲取游標
cursor
=
conn.cursor()
# 執行sql語句
sql
=
'update test set name = %s where id = %s'
rows
=
cursor.executemany(sql,[(
'全棧測試筆記5'
,
'5'
),(
'全棧測試筆記6'
,
'6'
)])
# 提交
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
|
刪除數據
單條
下面腳本和上面增加數據,除了執行sql語句部分不一樣,其余都一樣
1
2
3
|
# 執行sql語句
sql
=
'delete from test where id = %s'
rows
=
cursor.execute(sql,(
'1'
,))
|
多條
下面腳本和上面增加數據,除了執行sql語句部分不一樣,其余都一樣
1
2
3
|
# 執行sql語句
sql
=
'delete from test where id = %s'
rows
=
cursor.executemany(sql,[(
'2'
),(
'3'
)])
|
查詢數據
fetchone
有點像從管道中取一個,如果再來一個fetchone,會又取下一個,如果取完了再取,就返回None
每條記錄為元組格式
下面腳本和上面增加數據,除了執行sql語句部分不一樣,其余都一樣
1
2
3
4
5
6
7
|
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
|
運行結果:
(4, 'qzcsbj4')
(5, '全棧測試筆記5')
(6, '全棧測試筆記6')
(7, 'qzcsbj')
None
每條記錄為字典格式
1
2
3
4
5
6
7
8
9
10
|
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
print
(cursor.fetchone())
|
運行結果:
{'id': 4, 'name': 'qzcsbj4'}
{'id': 5, 'name': '全棧測試筆記5'}
{'id': 6, 'name': '全棧測試筆記6'}
{'id': 7, 'name': 'qzcsbj'}
None
fetchmany
1
2
3
4
5
6
|
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
print
(cursor.fetchmany(
2
))
|
運行結果:
[{'id': 4, 'name': 'qzcsbj4'}, {'id': 5, 'name': '全棧測試筆記5'}]
fetchall
1
2
3
4
5
6
7
|
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
print
(cursor.fetchall())
print
(cursor.fetchall())
|
運行結果:
[{'id': 4, 'name': 'qzcsbj4'}, {'id': 5, 'name': '全棧測試筆記5'}, {'id': 6, 'name': '全棧測試筆記6'}, {'id': 7, 'name': 'qzcsbj'}]
[]
相對絕對位置移動
從頭開始跳過n個
1
2
3
4
5
6
7
|
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
cursor.scroll(
3
,mode
=
'absolute'
)
print
(cursor.fetchone())
|
運行結果:
{'id': 7, 'name': 'qzcsbj'}
相對當前位置移動
1
2
3
4
5
6
7
8
|
# 獲取游標
cursor
=
conn.cursor(pymysql.cursors.DictCursor)
# 執行sql語句
rows
=
cursor.execute(
'select * from test;'
)
print
(cursor.fetchone())
cursor.scroll(
2
,mode
=
'relative'
)
print
(cursor.fetchone())
|
運行結果:
{'id': 4, 'name': 'qzcsbj4'}
{'id': 7, 'name': 'qzcsbj'}
> > > 1、微信公眾號:全棧測試筆記
> > > 2、技術交流Q群:652122175
> > > 3、性能測試從0到實戰: https://www.cnblogs.com/uncleyong/p/12311432.html
> > > 4、自動化測試實戰: https://www.cnblogs.com/uncleyong/p/12016690.html
> > > 5、測試匯總:
https://www.cnblogs.com/uncleyong/p/10530261.html
> > > 6、聲明:本文部分內容可能來源或整理自網絡,如有侵權,請聯系刪除。
================================ END ================================
<div class="clear"></div>
<div id="post_next_prev">
<a href="https://www.cnblogs.com/uncleyong/p/10931195.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/uncleyong/p/10931195.html" title="發布於 2019-05-26 15:59">mysql,本地連接看到的數據庫不全,遠程連接看到的數據庫是完整的</a>
<br>
<a href="https://www.cnblogs.com/uncleyong/p/10990062.html" class="p_n_p_prefix">» </a> 下一篇: <a href="https://www.cnblogs.com/uncleyong/p/10990062.html" title="發布於 2019-06-01 10:09">JMeter基礎【第六篇】JMeter5.1事務、檢查點、集合點、思考時間、其余設置等</a>