1. MySQLdb 的使用
(1) 什么是MySQLdb?
??MySQLdb 是用于 Python 連接 MySQL 數(shù)據(jù)庫的接口,它實現(xiàn)了 Python 數(shù)據(jù)庫 API 規(guī)范 V2.0,基于 MySQL C API 上建立的。
(2) 源碼安裝 MySQLdb: https://pypi.python.org/pypi/MySQL-python
$ tar zxvf MySQL-python-*.tar.gz
$ cd MySQL-python-*
$ python setup.py build
$ python setup.py install
(3) MySQLdb 的使用:
#!/usr/bin/env python
# coding=utf-8import MySQLdbdef connectdb():print('連接到mysql服務器...')# 打開數(shù)據(jù)庫連接# 用戶名:hp, 密碼:Hp12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創(chuàng)建數(shù)據(jù)庫TESTDB,并在TESTDB數(shù)據(jù)庫中創(chuàng)建好表Studentdb = MySQLdb.connect("localhost","hp","Hp12345.","TESTDB")print('連接上了!')return dbdef createtable(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# 如果存在表Sutdent先刪除cursor.execute("DROP TABLE IF EXISTS Student")sql = """CREATE TABLE Student (ID CHAR(10) NOT NULL,Name CHAR(8),Grade INT )"""# 創(chuàng)建Sutdent表cursor.execute(sql)def insertdb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 插入語句sql = """INSERT INTO StudentVALUES ('001', 'CZQ', 70),('002', 'LHQ', 80),('003', 'MQ', 90),('004', 'WH', 80),('005', 'HP', 70),('006', 'YF', 66),('007', 'TEST', 100)"""#sql = "INSERT INTO Student(ID, Name, Grade) \# ? ?VALUES ('%s', '%s', '%d')" % \# ? ?('001', 'HP', 60)try:# 執(zhí)行sql語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:# Rollback in case there is any errorprint '插入數(shù)據(jù)失敗!'db.rollback()def querydb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 查詢語句#sql = "SELECT * FROM Student \# ? ?WHERE Grade > '%d'" % (80)sql = "SELECT * FROM Student"try:# 執(zhí)行SQL語句cursor.execute(sql)# 獲取所有記錄列表results = cursor.fetchall()for row in results:ID = row[0]Name = row[1]Grade = row[2]# 打印結(jié)果print "ID: %s, Name: %s, Grade: %d" % \(ID, Name, Grade)except:print "Error: unable to fecth data"def deletedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 刪除語句sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交修改db.commit()except:print '刪除數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def updatedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 更新語句sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:print '更新數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def closedb(db):db.close()def main():db = connectdb() ? ?# 連接MySQL數(shù)據(jù)庫createtable(db) ? ? # 創(chuàng)建表insertdb(db) ? ? ? ?# 插入數(shù)據(jù)print '\n插入數(shù)據(jù)后:'querydb(db)?deletedb(db) ? ? ? ?# 刪除數(shù)據(jù)print '\n刪除數(shù)據(jù)后:'querydb(db)updatedb(db) ? ? ? ?# 更新數(shù)據(jù)print '\n更新數(shù)據(jù)后:'querydb(db)closedb(db) ? ? ? ? # 關(guān)閉數(shù)據(jù)庫if __name__ == '__main__':main()
運行結(jié)果:
2. PyMySQL 的使用
(1) 什么是 PyMySQL?
??PyMySQL 是 Python 中用于連接 MySQL 服務器的一個庫,它遵循 Python 數(shù)據(jù)庫 API 規(guī)范 V2.0,并包含了 pure-Python MySQL 客戶端庫。
(2) 安裝 PyMysql:
pip install PyMysql
(3) 使用 PyMySQL:
#!/usr/bin/env python
# coding=utf-8import pymysqldef connectdb():print('連接到mysql服務器...')# 打開數(shù)據(jù)庫連接# 用戶名:hp, 密碼:Hp12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創(chuàng)建數(shù)據(jù)庫TESTDB,并在TESTDB數(shù)據(jù)庫中創(chuàng)建好表Studentdb = pymysql.connect("localhost","hp","Hp12345.","TESTDB")print('連接上了!')return dbdef createtable(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# 如果存在表Sutdent先刪除cursor.execute("DROP TABLE IF EXISTS Student")sql = """CREATE TABLE Student (ID CHAR(10) NOT NULL,Name CHAR(8),Grade INT )"""# 創(chuàng)建Sutdent表cursor.execute(sql)def insertdb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 插入語句sql = """INSERT INTO StudentVALUES ('001', 'CZQ', 70),('002', 'LHQ', 80),('003', 'MQ', 90),('004', 'WH', 80),('005', 'HP', 70),('006', 'YF', 66),('007', 'TEST', 100)"""#sql = "INSERT INTO Student(ID, Name, Grade) \# ? ?VALUES ('%s', '%s', '%d')" % \# ? ?('001', 'HP', 60)try:# 執(zhí)行sql語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:# Rollback in case there is any errorprint '插入數(shù)據(jù)失敗!'db.rollback()def querydb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 查詢語句#sql = "SELECT * FROM Student \# ? ?WHERE Grade > '%d'" % (80)sql = "SELECT * FROM Student"try:# 執(zhí)行SQL語句cursor.execute(sql)# 獲取所有記錄列表results = cursor.fetchall()for row in results:ID = row[0]Name = row[1]Grade = row[2]# 打印結(jié)果print "ID: %s, Name: %s, Grade: %d" % \(ID, Name, Grade)except:print "Error: unable to fecth data"def deletedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 刪除語句sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交修改db.commit()except:print '刪除數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def updatedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 更新語句sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:print '更新數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def closedb(db):db.close()def main():db = connectdb() ? ?# 連接MySQL數(shù)據(jù)庫createtable(db) ? ? # 創(chuàng)建表insertdb(db) ? ? ? ?# 插入數(shù)據(jù)print '\n插入數(shù)據(jù)后:'querydb(db)?deletedb(db) ? ? ? ?# 刪除數(shù)據(jù)print '\n刪除數(shù)據(jù)后:'querydb(db)updatedb(db) ? ? ? ?# 更新數(shù)據(jù)print '\n更新數(shù)據(jù)后:'querydb(db)closedb(db) ? ? ? ? # 關(guān)閉數(shù)據(jù)庫if __name__ == '__main__':main()
運行結(jié)果:
3. mysql.connector 的使用
(1) 什么是 mysql.connector?
??由于 MySQL 服務器以獨立的進程運行,并通過網(wǎng)絡(luò)對外服務,所以,需要支持 Python 的 MySQL 驅(qū)動來連接到 MySQL 服務器。
目前,有兩個 MySQL 驅(qū)動:
mysql-connector-python:是 MySQL 官方的純 Python 驅(qū)動;
MySQL-python :是封裝了 MySQL C驅(qū)動的 Python 驅(qū)動。
(2) 安裝 mysql.connector:
pip install mysql-connector-python
pip install MySQL-python
(3) 使用 mysql.connector:
#!/usr/bin/env python
# coding=utf-8import mysql.connectordef connectdb():print('連接到mysql服務器...')# 打開數(shù)據(jù)庫連接# 用戶名:hp, 密碼:Hp12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創(chuàng)建數(shù)據(jù)庫TESTDB,并在TESTDB數(shù)據(jù)庫中創(chuàng)建好表Studentdb = mysql.connector.connect(user="hp", passwd="Hp12345.", database="TESTDB", use_unicode=True)print('連接上了!')return dbdef createtable(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# 如果存在表Sutdent先刪除cursor.execute("DROP TABLE IF EXISTS Student")sql = """CREATE TABLE Student (ID CHAR(10) NOT NULL,Name CHAR(8),Grade INT )"""# 創(chuàng)建Sutdent表cursor.execute(sql)def insertdb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 插入語句sql = """INSERT INTO StudentVALUES ('001', 'CZQ', 70),('002', 'LHQ', 80),('003', 'MQ', 90),('004', 'WH', 80),('005', 'HP', 70),('006', 'YF', 66),('007', 'TEST', 100)"""#sql = "INSERT INTO Student(ID, Name, Grade) \# ? ?VALUES ('%s', '%s', '%d')" % \# ? ?('001', 'HP', 60)try:# 執(zhí)行sql語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:# Rollback in case there is any errorprint '插入數(shù)據(jù)失敗!'db.rollback()def querydb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 查詢語句#sql = "SELECT * FROM Student \# ? ?WHERE Grade > '%d'" % (80)sql = "SELECT * FROM Student"try:# 執(zhí)行SQL語句cursor.execute(sql)# 獲取所有記錄列表results = cursor.fetchall()for row in results:ID = row[0]Name = row[1]Grade = row[2]# 打印結(jié)果print "ID: %s, Name: %s, Grade: %d" % \(ID, Name, Grade)except:print "Error: unable to fecth data"def deletedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 刪除語句sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交修改db.commit()except:print '刪除數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def updatedb(db):# 使用cursor()方法獲取操作游標?cursor = db.cursor()# SQL 更新語句sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')try:# 執(zhí)行SQL語句cursor.execute(sql)# 提交到數(shù)據(jù)庫執(zhí)行db.commit()except:print '更新數(shù)據(jù)失敗!'# 發(fā)生錯誤時回滾db.rollback()def closedb(db):db.close()def main():db = connectdb() ? ?# 連接MySQL數(shù)據(jù)庫createtable(db) ? ? # 創(chuàng)建表insertdb(db) ? ? ? ?# 插入數(shù)據(jù)print '\n插入數(shù)據(jù)后:'querydb(db)?deletedb(db) ? ? ? ?# 刪除數(shù)據(jù)print '\n刪除數(shù)據(jù)后:'querydb(db)updatedb(db) ? ? ? ?# 更新數(shù)據(jù)print '\n更新數(shù)據(jù)后:'querydb(db)closedb(db) ? ? ? ? # 關(guān)閉數(shù)據(jù)庫if __name__ == '__main__':main()
運行結(jié)果:
---------------------?
作者:HP的博客?
來源:CSDN?
原文:https://blog.csdn.net/Oscer2016/article/details/70257024?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的Python操作MySQL数据库的三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。