Python操作MySQL資料庫的兩種方式pymysql和pandas
目錄
第一種 使用pymysql
程式碼如下:
import pymysql #開啟資料庫連線 db=pymysql.connect(host='1.1.1.1',port=3306,user='root',passwd='123123',db='test',charset='utf8') cursor=db.cursor()#使用cursor()方法獲取操作遊標 sql = "select * from test0811" cursor.execute(sql) info = cursor.fetchall() db.commit() cursor.close() #關閉遊標 db.close()#關閉資料庫連線
資料表test0811的內容和上邊的程式碼讀出來的內容分別是
pymysql是Python操作MySQL資料庫的模組。首先引入pymysql模組
import pymysql
使用pymysql的connect()方法連線資料庫,connect的幾個引數解釋如下:
- host:MySQL服務的地址,若資料庫在本地上,使用localhost或者127.0.0.1。如果在其它的伺服器上,應該寫IP地址。
- port:服務的埠號,預設為3306,如果不寫,為預設值。
- user:登入資料庫的使用者名稱
- passwd:user賬戶登入MySQL的密碼
- db:將要操作的資料庫的名字
- charset:設定為utf8編碼,這樣就可以存入漢字沒有亂碼
注意:除了port=3306不用引號,其它項的值都有用引號括起來
程式碼中的db就架起了Python和MySQL通訊的橋樑,db.cursor()表示返回連線的遊標物件,通過遊標執行SQL語句。還有幾個常用的方法是commit()表示提交資料庫修改,rollback()表示回滾,就是取消當前的操作,close()表示關閉連線。
上面講的是連線物件db的一些方法,遊標物件的一些方法也很重要,利用遊標物件的方法就可以對資料庫進行操作了,遊標物件的常用方法如下表:
名稱 | 描述 |
---|---|
close() | 關閉遊標,之後遊標不可用 |
execute(query[,args]) | 執行一條SQL語句,可以帶引數 |
executemany(query,pseq) | 對序列pseq中的每個引數執行SQL語句 |
fetchone() | 返回一條查詢結果 |
fetchall() | 返回所有查詢結果 |
fetchmany([size]) | 返回size條查詢結果 |
nextset() | 移動到下一條結果 |
scroll(value,mode='relative') | 移動遊標到指定行,如果mode='relative',則表示從當前行移動value條,如果mode=‘absolute’,則表示從結果集的第一行移動value條 |
到這裡就基本把pymysql的基本用法講清楚了,剩下的對資料庫的操作(增刪改查)就是SQL語句的事情了。雖然SQL語句很強大,但有時候也會顯得力不從心,Python的靈活加上SQL的強大才可以做更多的事情,而pymysql只是充當工具、橋樑的作用。從程式碼執行的結果中(第二幅圖)發現讀出來的結果是存放在二維元組中的,即((1, '小紅', '80'),(2, '小明', '90'),(3, '小美', '87'),(4, 'GG', '67'),(5, 'MM', '78')),但是元組不可改變,只能讀出,對於資料處理還有些不便,下面第二種方法就是把資料讀出存放在DataFrame中,便於處理。
第二種 使用pandas
程式碼如下:
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.types import CHAR,INT
connect_info = 'mysql+pymysql://username:[email protected]:3306/dbname?charset=utf8'
engine = create_engine(connect_info) #use sqlalchemy to build link-engine
sql = "SELECT * FROM test0811" #SQL query
df = pd.read_sql(sql=sql, con=engine) #read data to DataFrame 'df'
#write df to table 'test1'
df.to_sql(name = 'test1',
con = engine,
if_exists = 'append',
index = False,
dtype = {'id': INT(),
'name': CHAR(length=2),
'score': CHAR(length=2)
}
)
pandas的DataFrame資料格式有行索引和列索引,使用DataFrame來儲存資料庫表中的資料會十分方便。使用pandas中的read_sql和to_sql函式從MySQL資料庫中讀寫資料。兩個函式介紹如下。
pandas.read_sql
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
常用的引數是sql:SQL命令或者表名字,con:連線資料庫的引擎,可以用SQLAlchemy或者pymysql建立,從資料庫讀資料的基本用法給出sql和con就可以了。其它都是預設引數,有特殊需求才會用到,有興趣的話可以檢視文件。
程式碼中的con是使用SQLAlchem構建資料庫連線引擎,即sqlalchemy.create_engine( )。這個函式基於一個URL來產生一個引擎物件,URL通常包含了資料庫的相關資訊,典型的形式是:
dialect+driver://username:[email protected]:port/database
dialect表示資料庫的名字,比如sqlite,mysql,postgresql,oracle,mssql等,driver是用於連線資料庫的DBAPI的名字,這裡用的是pymysql(Python 3.x,在Python 2.x中用的是mysqldb),如果這一項不指定,將使用預設的DBAPI。
除了使用SQLAlchemy建立engine外,還可以直接使用DBAPI建立engine,程式碼如下:
con = pymysql.connect(host=localhost, user=username, password=password, database=dbname, charset='utf8')
df = pd.read_sql(sql, con)
pandas.DataFrame.to_sql
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
- name:輸出的表名
- con:連線資料庫的引擎
- if_exists:三種模式{“fail”,“replace”,"append"},預設是"fail"。fail:若表存在,引發一個ValueError;replace:若表存在,覆蓋原來表內資料;append:若表存在,將資料寫到原表資料的後面。
- index:是否將DataFrame的index單獨寫到一列中,預設為“True”
- index_label:當index為True時,指定列作為DataFrame的index輸出
- dtype:指定列的資料型別,字典形式儲存{column_name: sql_dtype},常見資料型別是sqlalchemy.types.INT()和sqlalchemy.types.CHAR(length=x)。注意:INT和CHAR都需要大寫,INT()不用指定長度。
參考資料:
相關推薦
Python操作MySQL資料庫的兩種方式pymysql和pandas
目錄 第一種 使用pymysql 程式碼如下: import pymysql #開啟資料庫連線 db=pymysql.connect(host='1.1.1.1',port=3306,user='root',passwd='123123',db='te
Python 操作 MySQL 的5種方式
1、MySQLdb MySQLdb又叫MySQL-python ,是 Python 連線 MySQL 最流行的一個驅動,很多框架都也是基於此庫進行開發,遺憾的是它只支援 Python2.x,而且安裝的時候有很多前置條件,因為它是基於C開發的庫,在 Windows 平臺安裝非常不友好,經常出現失敗的
Python 操作 MySQL 的5種方式(轉)
不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最流行的一種資料庫,這篇文章介紹 Python 操作 MySQL 的5種方式,你可以在實際開發過程中根據實際情況合理選擇。 1、MySQLdb MySQLdb又叫MySQL-python
用sql語句操作mysql資料庫的增刪改查(命令提示符和引入mysql模組兩種方式)
1:命令提示符方法: 我的 :mysql.sql檔案。當然首先得開啟本地伺服器(我的是xampp); 少了一步了:首先要在進入mysql -h127.0.0.1 -u root -p;後引入我的mysql.sql 檔案; 我用的是 source方法: source
python-文件操作-修改的兩種方式
import str2 replace new col 檢查 循環 blog nbsp 方法一:(占內存) 全部把文件讀進內存進行修改。 f_name ="D:/聯系方式2.txt" old_str =‘喬一菲‘ new_str =‘剛亮‘ f =open(f_nam
@芥末的糖 ---------- node連線資料庫兩種方式mysql和moogoDB
先做個總結:連線資料庫是一個建庫,建Schema的過程...之後就是利用例項化的物件進行資料庫的操作... 1.moogoDB的連線 //database.js var mongoose = require('mongoose') mongoose.connect('mongodb://loca
python操作mysql資料庫,pymysql
python裡操作mysql的模組是pymysql 一、安裝mysql 二、安裝pysql pip3 install pymysql 如果是在pycharm裡安裝pymysql模組,如圖進去安裝介面,搜尋pymysql然後安裝就行。 三、使用pymy
javascript教程系列40:DOM中操作樣式的兩種方式
AS color 單位 css 註意 pan col ntb javascrip 1 DOM中操作樣式的兩種方式 1 通過元素的style屬性 註意: 通過style屬性設置樣式時,css中要寫單位的屬性,在js代碼中也要加單位 //html <div id="bo
Python操作Hive的兩種方法總結
方法一:使用PyHive庫 安裝依賴包:其中sasl安裝可能會報錯,可以去https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下載對應版本安裝。 pip install sasl pip install thrift pip install thr
python操作MySQL資料庫心得(numpy陣列寫入資料庫)
最近突發奇想,想把以前用Matlab實現的對高頻彩的開獎資料進行抓取並儲存到本地的專案重新用python做一遍。加上前段時間學習的MySQL,想將讀取回來的開獎資料存放到資料庫裡試試看。 廢話不多說,實操看看。 網頁下載器 這部分就
Column count doesn't match value count at row 1(Python操作MySQL資料庫時的報錯)
首先,這個錯誤的意思是,我們插入資料庫的列與資料庫中的列不是一一對應的。 當使用Python操作MySQL資料庫時,如果id是自增,或者timestamp是自動生成的時候,我們不能採用 "INSERT INTO 表名 VALUES (%s, %s, %s, %s, %s, %s,
轉 Python 操作 MySQL 資料庫
#########http://www.runoob.com/python/python-mysql.html Python 標準資料庫介面為 Python DB-API,Python DB-API為開發人員提供了資料庫應用程式設計介面。 Python 資料庫介面支援非常多的資料庫,你可以選擇適合你專案的
報錯處理:Python操作Mysql資料庫插入中文錯誤
學習《python網路爬蟲從入門到實踐》中遇到以下錯誤: Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1 出現這個錯誤的原因是,資料庫的編碼格式為latin1 而我要將utf
python操作mysql資料庫
安裝mysql-connector import mysql.connector config { 'host':'127.0.0.1', 'port':'3306', 'user':'usr', 'password':'pwd', 'charset':'utf8
除錯環境python3.6,除錯python操作mysql資料庫
python3.6下程式碼如下 #coding:utf-8 #python3.6使用pymysql操作mysql print("=====================mysql資料庫=====================") import pymysql.cursors # 連
用 Python 連線 MySQL 的幾種方式
儘管很多 NoSQL 資料庫近幾年大放異彩,但是像 MySQL 這樣的關係型資料庫依然是網際網路的主流資料庫之一,每個學 Python 的都有必要學好一門資料庫,不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最
六.使用python操作mysql資料庫
資料庫的安裝和連線 pymysql的安裝 pip install PyMySQL python連線資料庫 import pymysql db = pymysql.connect("資
Mysql學習(三)Spark(Scala)寫入Mysql的兩種方式
package total import org.apache.spark.sql.{DataFrame, Row, SQLContext, SparkSession} import org.apache.spark.{SparkConf, SparkContext} imp
Python操作mysql資料庫(封裝基本的增刪改查)
新學Python,在這裡分享操作MySQL的全過程 1、安裝MySQL-python-1.2.3.win-amd64-py2.7.exe,這是操作mysql資料庫的python庫,有32位和64位之分,看自機器下載 2、64位機器安裝MySQL-python-1.2.
Python 操作 MySQL 資料庫
寫在之前 在之前的文章中我們學習用檔案形式將資料儲存到磁碟中,雖然這已經是一種不錯的方式,但是頭禿的大佬們還是發明了更快更便捷的東西:「資料庫」。它更具有格式化的特點,並且寫入和讀取更快更方便。 到目前為止,我們所熟知的主流資料庫有三種: 關係型資料庫:MySQL,