程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python高級培訓-第六次任務

編輯:Python

菜鳥教程:Python3 MySQL 數據庫連接 – PyMySQL 驅動 | 菜鳥教程

學習教程(視頻):Python連接MySQL數據庫【趣學Python】_哔哩哔哩_bilibili

學習教程(文件):Python連接MySQL數據庫_Python全棧之巅-CSDN博客_python 連接mysql數據庫

數據庫連接:

連接數據庫前,請先確認以下事項:

  • 您已經創建了數據庫 TESTDB.
  • 在TESTDB數據庫中您已經創建了表 EMPLOYEE
  • EMPLOYEE表字段為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
  • 連接數據庫TESTDB使用的用戶名為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root用戶名及其密碼,Mysql數據庫用戶授權請使用Grant命令。
  • 在你的機子上已經安裝了 Python MySQLdb 模塊。
  • 如果您對sql語句不熟悉,可以訪問菜鳥教程:SQL 教程 | 菜鳥教程

 導入庫

import pymysql

連接數據庫


DBHOST = 'localhost'
DBUSER = '用戶名'
DBPASS = '密碼'
DBNAME = '連接名稱'

try except捕獲異常


try:
db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
print('數據庫連接成功!')
except pymysql.Error as e:
print('數據庫連接失敗'+str(e))

 創建一張新表

# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()
# 使用 execute() 方法執行 SQL 查詢
# cursor.execute("SELECT VERSION()")
# 創建表之前先檢查是否存在,如果存在則刪除
cursor.execute('DROP TABLE IF EXISTS Student')
# 編輯sql語句
#sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Age CHAR(20),Major CHAR(20) ,Num CHAR(20))ENGINE=InnoDB " \
"DEFAULT CHARSET=gbk; "
cursor.execute(sqlQuery)

 此處注意編碼格式:DEFAULT CHARSET=gbk 如果沒有這個語句,向數據庫中插入中文會報錯 

參考教程:解決Python往MySQL插入中文時報錯的問題_aaa2549769750的博客-CSDN博客

 

向表中插入數據

# 編輯sql語句
sqlQuery=" INSERT INTO Student (Name, Age, Major, Num) VALUE (%s,%s,%s,%s) "
# 編輯准備插入的值
value=('小西','20級','移動軟件','123456')
# 執行sql語句
try:
cursor.execute(sqlQuery,value)
db.commit()
print('數據插入成功!')
except pymysql.Error as e:
print("數據插入失敗:"+str(e) )
db.rollback()

查詢表中的數據

Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。

  • fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象
  • fetchall(): 接收全部的返回結果行.
  • rowcount: 這是一個只讀屬性,並返回執行execute()方法後影響的行數。

實例:

# 編輯sql語句
sqlQuery = "SELECT * FROM Student"
# 使用fetchall()方法接收全部的返回結果行
try:
cursor.execute(sqlQuery)
results=cursor.fetchall()
for row in results:
if row[0]=='小西':
name=row[0]
age=row[1]
major=row[2]
num=row[3]
print('Name:%s,age:%s,major:%s,num:%s'%(name,age,major,num))
except pymysql.Error as e:
print("數據查詢失敗:"+str(e))

更新表中的數據

#編輯sql語句
sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"
#編輯更新的信息
value = ('John', 'updated name')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('數據更新成功!')
except pymysql.Error as e:
print("數據更新失敗:"+str(e))
# 發生錯誤時回滾
db.rollback()

刪除表中的數據

#編輯sql語句
sqlQuery = "DELETE FROM Student where Name=%s"
#編輯更新的信息
value = ('John')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('Date Deleted Successfully')
except pymysql.Error as e:
print("數據刪除失敗:"+str(e))
# 發生錯誤時回滾
db.rollback()

刪除一張表

#編輯sql語句
sqlQuery='DROP TABLE IF EXISTS Student'
#提交修改
cur.execute(sqlQuery)
print('表刪除成功!')

關閉數據庫連接

# 關閉數據庫連接
db.close()


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved