筆記mysqlcliet:連接本地MySQL,再導入DataFrame

第一步:連接MySQL,以便執行SQL語句

import MySQLdb as msd
import pandas as pd

conn = msd.connect(host='localhost',                 # 不能使用 hostname
                   port=3306,
                   user='root',                      # 不能使用 username
                   password='寫user對應的密碼',       # 可以縮寫爲passwd
                   db='database_name',               # 可以使用database
                   charset='utf8'
                   )
cur = conn.cursor()

第二步:輸入SQL語句 -> 執行SQL -> 結束

cur.execute("CREATE DATABASE test;")
cur.execute("CREATE TABLE haha(row_1 varchar(20);")
data = cur.execute("SELECT * FROM haha;")  
print(data)                                         # print返回的是“行數”。

# 如果想把SQL結果導入pandas DataFrame,進行如下操作
# SQL = "SELECT * FROM haha;"
# df = pd.read_sql(sql=SQL, con=conn)
# print(df)

cur.close()
conn.close()               

附註: 涉及的函數

pandas.read_sql(
                """常用參數"""
                sql,              # 輸入SQL
                con,              # 搭建好的sql 鏈接,如上邊案例中的conn=(<blabla>),具體參數見下邊的函數
                chunksize         # int類型,默認值是None。指定一次取出來的數據量,避免數據過大導致內不足而不能一次性取出數據
                
                """不常用參數"""
                columns,          # list類型,默認值是None。刪選出我們需要的columns數據。
                params,           # 可以是list/tuple/dict,默認值是None。根據自己的SQL官方文檔,傳入的參數
                index_col,        # 可以是string/list,默認值是None。被用來當做index/multiindex。
                coerce_float,     # 把SQL裏邊的以非數值型保存的數字decimal轉化爲float。
                parse_dates,      # 可以是list/dict,默認值None。對象是column,詳見官方文檔。
                )

注:SQL中float和decimal的區別(參考鏈接)
· float和decimal,分別是非標準數據類型和標準數據類型。
· 區別是,float等非標準類型、在DB中保存的是近似值,二decimal則是以字符串的形式保存數值。

MySQL.connect(
              """常用參數"""
              host,                  # 指明要連接的host
              user,                  # 指明登錄的用戶名
              passwd,                # 指明登錄用戶的密碼
              db,                    # 指明要連接的database
              port,                  # 指明登錄的port
              charset,               # 指定字符編碼,比如gbk/utf8/unicode等等
              connect_timeout,       # 指明超過X秒之後,放棄鏈接db
              
              """不常用參數"""
              unix_socket,  
              conv,
              compress,
              named_pipe
              init_command,
              read_default_file,
              read_default_group,
              cursorclass,
              use_unicode,
              sql_mode,
              ssl
              )
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章