python數據儲存到mysql


  python數據儲存到mysql

  其實同Java中的JDBC類似,都是先建立起來與數據庫的鏈接conn,然后獲取數據庫操作對象(這里是會話指針cursor),然后執行SQL語句,提交,關閉。

 

一:安裝pymysql包以及pandas包:

  pip install pymysql

  pip install pandas這個是讀取mysql以及其他形式的數據所需要的包

二:pymysql使用步驟:

  1. 引入開發包;import pymysql

  2. 獲取數據庫連接;

    conn=pymysql.connect(host="localhost",user='root',password="",db="hanxiao",charset="utf-8",port=3306)
    #host:連接在本地,user:用戶名,password:密碼,db:數據庫名稱,charset:編碼方式,port:運行端口3306

     

  3. 獲取會話指針:conn.cursor()

  4. 執行SQL語句:cursor.excute(sql,(參數1,參數n))

  5. 提交:conn.commit()

  6. 關閉: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)

  輸出:

 

 

 

七:pandas包下載到一半就失敗了,待續:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM