其實同Java中的JDBC類似,都是先建立起來與數據庫的鏈接conn,然后獲取數據庫操作對象(這里是會話指針cursor),然后執行SQL語句,提交,關閉。
一:安裝pymysql包以及pandas包:
pip install pymysql
pip install pandas這個是讀取mysql以及其他形式的數據所需要的包
二:pymysql使用步驟:
-
-
獲取數據庫連接;
conn=pymysql.connect(host="localhost",user='root',password="",db="hanxiao",charset="utf-8",port=3306) #host:連接在本地,user:用戶名,password:密碼,db:數據庫名稱,charset:編碼方式,port:運行端口3306
-
獲取會話指針:
conn.cursor() -
執行SQL語句:
cursor.excute(sql,(參數1,參數n)) -
提交:
conn.commit() -
關閉:
conn.close
三:創建數據庫,添加表單信息:
#創建數據庫 def create_db(): db = pymysql.connect(host='localhost',user='root', password='123456', db="test1",port=3306) cursor = db.cursor() cursor.execute("CREATE DATABASE test_db DEFAULT CHARACTER SET utf8") db.close() #創建表單 def create_table(db): db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='test') cursor = db.cursor() cursor.execute('DROP TABLE IF EXISTS test_table') sql = 'CREATE TABLE IF NOT EXISTS test_table(id VARCHAR(255), name VARCHAR(255), age INT, PRIMARY KEY (id))' cursor.execute(sql) db.close() #insert數據到表單: #方法1: def insert(value): db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='tv') cursor = db.cursor() sql = "INSERT INTO test_table(id, name, age) values(%s, %s, %s)" try: cursor.execute(sql, value) db.commit() print('插入數據成功') except: db.rollback() print("插入數據失敗") db.close() #方法2: # 創建SQL語句 sql = "insert into `urls`(`urlname`,`urlhref`) values(%s,%s)"#為了防止sql注入,所以使用%s,%s來替換 # 執行SQL語句,第一個是sql語句,第二個是補充%s的內容 cursor.execute(sql, (url.get_text(), "https://en.wikipedia.org" + url["href"]))
四:讀取mysql數據:
# 獲取數據庫連接 connection = pymysql.connect(host='localhost', user='root', password='123456', db='wikiurl', charset='utf8mb4') try: #獲取會話指針 with connection.cursor() as cursor: #查詢語句 sql = "select `urlname`,`urlhref` from `urls` where `id` is not null" #查詢所有行數,這里使用execute返回的是一個查詢結果表 count = cursor.execute(sql) print(count) #查詢前三條數據:fetchmany:后面的內容是匹配的個數,從0開始 result = cursor.fetchmany(size=3) print(result) finally: connection.close()
五:讀取mysql數據的時候需要使用pandas來讀取(excel也是),否則返回的是一給int類型的值
import pandas as pd #利用pandas 模塊導入mysql數據,讀取mysql數據,第一個參數是sql操作語句,第二個參數是connect對象
a=pd.read_sql(sqlcmd,dbconn) #取前5行數據 b=a.head() print(b) # 讀取csv數據 # pd.read_csv() # 讀取excel數據 #pd.read_excel() # 讀取txt數據 #pd.read_table()
六:連接mysql舉例:
import pymysql import urllib import pandas as pd def vistmysql(): conn=pymysql.connect(host="localhost",user="root",password="",db="hanxiao") cursor=conn.cursor() sql=r"select `ename` from `emp`" data=pd.read_sql(sql,conn) print(data)
輸出:

