用python操做數據庫,特別是作性能測試造存量數據時特別簡單方便,比存儲過程方便多了。html
前提:安裝mysql、python,參考:http://www.javashuo.com/article/p-dnexrcey-bg.htmlpython
數據庫qzcsjb的test表中初始化的數據:mysql
安裝pymysql模塊,pip install pymysqlsql
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('鏈接數據庫失敗')
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()
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()
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;數據庫
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()
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語句部分不同,其他都同樣app
# 執行sql語句 sql='delete from test where id = %s' rows=cursor.execute(sql,('1',))
下面腳本和上面增長數據,除了執行sql語句部分不同,其他都同樣性能
# 執行sql語句 sql='delete from test where id = %s' rows=cursor.executemany(sql,[('2'),('3')])
有點像從管道中取一個,若是再來一個fetchone,會又取下一個,若是取完了再取,就返回None測試
每條記錄爲元組格式fetch
下面腳本和上面增長數據,除了執行sql語句部分不同,其他都同樣3d
# 執行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
每條記錄爲字典格式
# 獲取遊標 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
# 獲取遊標 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'}]
# 獲取遊標 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個
# 獲取遊標 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'}
# 獲取遊標 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'}