Python讀寫數據庫
爲什麼要Python操作數據庫?
(1)測試需要:用例檢查點、用例數據準備、運維
(2)手工測試:使用工具
(3)自動化測試:編程語言訪問數據庫
1 Python操作Mysql
mysqlclient庫,第三方開發的
安裝命令:pip install mysqlclient == 1.3.12
獲取數據記錄:fetchone,fetchmany,fetchall
import MySQLdb
# 連接數據庫,設置連接參數:數據庫地址、端口、用戶名、密碼、所需連接的數據庫名、編碼方式
conn = MySQLdb.connect(
host = '192.168.5.249',
port = '9809',
user = 'admin',
password = '123456',
db = 'TestDB',
charset = 'utf8'
)
c = conn.cursor()
c.execute("select * from student")
# 打印出查詢的所有記錄
for i in range(c.rowcount):
row = c.fetchone()
if row[1] == 'MySQL'
print("檢查點 ==》 MySQL課程存在,測試通過")
break
# 插入一條記錄並提交事務
c.execute("insert into student(name, sex, year) value ('王少偉', '男', 25)")
conn.commit()
conn.close()
2 Python創建表create
import pymysql
def create_table():
db = pymysql.connect("localhost", "admin", "123456", "TestDB")
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS student")
sql = """
create table student(
first_name char(10) not null,
last_name char(10),
age int,
create_time datetime
)
"""
try:
cursor.execute(sql)
print("數據庫創建成功!")
except Exception as msg:
print("創建數據庫識別,case:%s" % msg)
finally:
db.close()
def main():
create_table()
if __name__ == "__main__" :
main()
3 Python插數據insert
import pymysql
import datetime
def insert_record():
db = pymysql.connect("localhost", "admin", "123456", "TestDB")
cursor = db.cursor()
sql = "insert into student(first_name, last_name, age, create_time)"\
"values('%s', '%s', %d, '%s') % " \
"('san', 'zhang', 22, datetime.datetime.now())"
try:
cursor.execute(sql)
db.commit()
print("插入數據成功!")
except Exception as msg:
print("插入數據失敗,case:%s" % msg)
db.rollback()
finally:
db.close()
def main():
insert_record()
if __name__ == "__main__":
main()
4 Python查數據select
import pymysql
import datetime
def select_record():
db = pymysql.connect("localhost", "admin", "123456", "TestDB")
cursor = db.cursor()
sql = "select * from student"
try:
cursor.execute(sql)
resulte = cursor.fetchall()
for row in resulte:
first_name = row[0]
last_name = row[1]
age = row[2]
create_time = row[4]
print(first_name, last_name, age, create_time)
except Exception as msg:
print("查詢數據失敗,case:%s" % msg)
db.rollback()
finally:
db.close()
def main():
select_record()
if __name__ == "__main__":
main()