mysql-connector 是 MySQL 官方提供的驅動器。
使用pipenv進行包管理,安裝命令以下:
pipenv install mysql-connectormysql
mysql.connector.connect(*args, **kwargs)
建立一個數據庫鏈接,返回MySQLConnectionAbstract實例。connect接收可變參數和關鍵字可變參數,一般接收可變參數時使用可變參數指定默認參數,接收關鍵字可變參數時使用字典類型參數。經常使用關鍵字以下:
'host': '127.0.0.1',
'user': 'root',
'password': 'root',
'port': 3306,
'database': 'test',
'charset': 'utf8'git
import mysql.connector MYSQL_CONFIG = { "host":"47.110.45.34", "port":"3306", "user":"root", "passwd":"xxxxxx" } if __name__ == '__main__': mysql_db = mysql.connector.connect(**MYSQL_CONFIG) print(mysql_db)
MySQLConnectionAbstract經常使用接口以下
mysql.connector.close()
斷開到MySQL服務器的鏈接
mysql.connector.disconnect()
斷開到MySQL服務器的鏈接
mysql.connector.reconnect(attempts=1, delay=0)
從新創建到MySQL服務器的鏈接
mysql.connector.ping(reconnect=False, attempts=1, delay=0)
檢查MySQL服務器的可用性
mysql.connector.commit()
提交當前事務
mysql.connector.rollback()
回滾當前事務
mysql.connector.start_transaction(consistent_snapshot=False,
isolation_level=None, readonly=None)
啓動事務
mysql.connector.cursor(buffered=None,raw=None,prepared=None, cursor_class=None,dictionary=None, named_tuple=None)
建立一個遊標
MySQLCursorAbstract經常使用接口以下:
MySQLCursorAbstract.close()
關閉遊標
MySQLCursorAbstract.execute(operation,params=(),multi=False)
執行SQL操做
MySQLCursorAbstract.executemany(operation, seqparams)
執行SQL操做屢次
MySQLCursorAbstract.fetchone()
返回查詢結果集的下一行,返回一個tuple或None。
MySQLCursorAbstract.fetchmany(size=1)
返回查詢結果集的後續size行,返回一個tuple的鏈表或空鏈表。
MySQLCursorAbstract.fetchall()
返回查詢結果集的全部行,返回一個tuple的鏈表
MySQLCursorAbstract.reset(self, free=True):
重置遊標到默認狀態github
# -*- coding:utf-8 -*- import mysql.connector if __name__ == '__main__': mysql_db = mysql.connector.connect( host="47.110.45.34", port="3306", user="root", passwd="YangYuLiang@123.com") mysql_cursor = mysql_db.cursor() try: # 建立數據庫 mysql_cursor.execute("CREATE DATABASE sites;") # 使用數據庫 mysql_cursor.execute("USE sites;") # 建立數據庫表 mysql_cursor.execute("CREATE TABLE website (name VARCHAR(255), url VARCHAR(255));") # 建立主鍵 mysql_cursor.execute("ALTER TABLE website ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY;") # 插入數據 sql = "INSERT INTO website (name, url) VALUES (%s, %s);" value = ("BaiDu", "https://www.baidu.com") mysql_cursor.execute(sql, value) mysql_db.commit() except: mysql_db.rollback() # 批量插入數據 sql = "INSERT INTO website (name, url) VALUES (%s, %s);" value = [ ('Google', 'https://www.google.com'), ('Github', 'https://www.github.com'), ('TaoBao', 'https://www.taobao.com'), ('HuaWei', 'https://www.huawei.com') ] try: mysql_cursor.executemany(sql, value) # 更新記錄 sql = "UPDATE website SET name = 'GitHub' WHERE name = 'Github'" mysql_cursor.execute(sql) mysql_db.commit() except: mysql_db.rollback() # 查詢記錄 try: mysql_cursor.execute("SELECT * FROM website;") result = mysql_cursor.fetchall() # fetchall() 獲取全部記錄 for x in result: print(x) # 刪除記錄 mysql_cursor.execute("DELETE FROM website WHERE name='Google';") # 刪除數據庫 mysql_cursor.execute("DROP DATABASE sites;") mysql_db.commit() except: # 回滾 mysql_db.rollback() # 關閉數據庫鏈接 mysql_db.close()
PyMySQL 是在 Python3.x 版本中用於鏈接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
PyMySQL 遵循 Python 數據庫 API v2.0 規範,幷包含了 pure-Python MySQL 客戶端庫。
使用pipenv進行包管理,安裝命令以下:
pipenv install pymysqlweb
pymysql.Connect(*args, **kwargs)
鏈接到MySQL數據庫,創建一個socket鏈接並返回Connection對象。Connection接收的關鍵字參數以下:
Connection(host=None, user=None, password="",
database=None, port=0, unix_socket=None,
charset='', sql_mode=None,
read_default_file=None, conv=None, use_unicode=None,
client_flag=0, cursorclass=Cursor, init_command=None,
connect_timeout=10, ssl=None, read_default_group=None,
compress=None, named_pipe=None,
autocommit=False, db=None, passwd=None, local_infile=False,
max_allowed_packet=1610241024, defer_connect=False,
auth_plugin_map=None, read_timeout=None, write_timeout=None,
bind_address=None, binary_prefix=False, program_name=None,
server_public_key=None)
Connection經常使用接口以下:
Connection.close()
發送退出消息,關閉到MySQL數據庫的socket鏈接
Connection.begin()
開啓事務
Connection.commit()
提交變化到穩定存儲
Connection.rollback()
回滾當前事務
Connection.select_db(self, db):
設置當前數據庫,db爲數據庫名稱
Connection.cursor(self, cursor=None)
建立一個用於SQL操做的遊標
Cursor經常使用接口以下:
Cursor.close()
關閉遊標
Cursor.execute(query, args=None)
執行SQL查詢操做,返回受影響的行的數量
Cursor.executemany(query, args)
批量執行SQL查詢操做,返回受影響的行的數量
Cursor.fetchone()
Fetch下一行
Cursor.fetchmany(size=None)
Fetch多行
Cursor.fetchall()
Fetch全部的行sql
import pymysql if __name__ == '__main__': mysql_db = pymysql.Connect( host="47.110.45.34", port=3306, user='root', password='YangYuLiang@123.com') mysql_cursor = mysql_db.cursor() try: # 建立數據庫 mysql_cursor.execute("CREATE DATABASE sites;") # 使用數據庫 mysql_cursor.execute("USE sites;") # 建立數據庫表 mysql_cursor.execute("CREATE TABLE website (name VARCHAR(255), url VARCHAR(255));") # 建立主鍵 mysql_cursor.execute("ALTER TABLE website ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY;") # 插入數據 sql = "INSERT INTO website (name, url) VALUES (%s, %s);" value = ("BaiDu", "https://www.baidu.com") mysql_cursor.execute(sql, value) mysql_db.commit() except: mysql_db.rollback() # 批量插入數據 sql = "INSERT INTO website (name, url) VALUES (%s, %s);" value = [ ('Google', 'https://www.google.com'), ('Github', 'https://www.github.com'), ('TaoBao', 'https://www.taobao.com'), ('HuaWei', 'https://www.huawei.com') ] try: mysql_cursor.executemany(sql, value) # 更新記錄 sql = "UPDATE website SET name = 'GitHub' WHERE name = 'Github'" mysql_cursor.execute(sql) mysql_db.commit() except: mysql_db.rollback() # 查詢記錄 try: mysql_cursor.execute("SELECT * FROM website;") result = mysql_cursor.fetchall() # fetchall() 獲取全部記錄 for x in result: print(x) # 刪除記錄 mysql_cursor.execute("DELETE FROM website WHERE name='Google';") # 刪除數據庫 mysql_cursor.execute("DROP DATABASE sites;") mysql_db.commit() except: # 回滾 mysql_db.rollback() # 關閉數據庫鏈接 mysql_db.close()