online gambling singapore online gambling singapore online slot malaysia online slot malaysia mega888 malaysia slot gacor live casino malaysia online betting malaysia mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 用Python 連接MySQL 的幾種方式

 


圖名

 

 

儘管很多NoSQL 數據庫近幾年大放異彩,但是像MySQL 這樣的關係型數據庫依然是互聯網的主流數據庫之一,每個學Python 的都有必要學好一門數據庫,不管你是做數據分析,還是網絡爬蟲,Web 開發、亦或是機器學習,你都離不開要和數據庫打交道,而MySQL 又是最流行的一種數據庫,這篇文章介紹Python 操作MySQL 的幾種方式,你可以在實際開發過程中根據實際情況合理選擇。

1、MySQL-python

 

MySQL-python 又叫MySQLdb,是Python 連接MySQL 最流行的一個驅動,很多框架都也是基於此庫進行開發,遺憾的是它只支持Python2.x,而且安裝的時候有很多前置條件,因為它是基於C開發的庫,在Windows 平台安裝非常不友好,經常出現失敗的情況,現在基本不推薦使用,取代的是它的衍生版本。

#前置條件
sudo  apt - get  install  python - dev  libmysqlclient - dev  # Ubuntu 
sudo  yum  install  python - devel  mysql - devel  # Red Hat / CentOS

#安裝
pip  install  MySQL - python

Windows 直接通過下載exe 文件安裝,公眾號回复「win」獲取下載鏈接

#!/usr/bin/python 
import  MySQLdb

db  =  MySQLdb . connect ( 
     host = "localhost" ,     #主機名
     user = "john" ,          #用戶名
     passwd = "megajonhy" ,   #密碼
     db = "jonhydb" )         #數據庫名稱

#查詢前,必須先獲取游標
cur  =  db . cursor ()

#執行的都是原生SQL語句
cur . execute ( "SELECT * FROM YOUR_TABLE_NAME" )

for  row  in  cur . fetchall (): 
    print ( row [ 0 ])

db . close ()

2、mysqlclient

 

由於MySQL-python 年久失修,後來出現了它的Fork 版本mysqlclient,完全兼容MySQLdb,同時支持Python3.x,是Django ORM的依賴工具,如果你想使用原生SQL 來操作數據庫,那麼推薦此驅動。安裝方式和MySQLdb 是一樣的,Windows 可以在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 網站找到對應版本的whl 包下載安裝。

大數據

# Windows安裝
pip  install  some - package . whl

# linux前置條件
sudo  apt - get  install  python3 - dev  # debian / Ubuntu 
sudo  yum  install  python3 - devel  # Red Hat / CentOS 
brew  install  mysql - connector - c  # macOS (Homebrew)

pip  install  mysqlclient

3、PyMySQL

 

PyMySQL 是純Python 實現的驅動,速度上比不上MySQLdb,最大的特點可能就是它的安裝方式沒那麼繁瑣,同時也兼容MySQL-python

pip  install  PyMySQL 
#為了兼容mysqldb,只需要加入
pymysql . install_as_MySQLdb ()

一個例子

import  pymysql 
conn  =  pymysql . connect ( host = '127.0.0.1' ,  user = 'root' ,  passwd = "xxx" ,  db = 'mysql' ) 
cur  =  conn . cursor () 
cur . execute ( "SELECT Host,User FROM user" ) 
for  r  in  cur : 
    print ( r ) 
cur . close () 
conn . close()

4、peewee

 

寫原生SQL 的過程非常繁瑣,代碼重複,沒有面向對象思維,繼而誕生了很多封裝wrapper 包和ORM 框架,ORM 是Python 對象與數據庫關係表的一種映射關係,有了ORM 你不再需要寫SQL語句。提高了寫代碼的速度,同時兼容多種數據庫系統,如sqlite, mysql、postgresql,付出的代價可能就是性能上的一些損失。如果你對Django 自帶的ORM 熟悉的話,那麼peewee的學習成本幾乎為零。它是Python 中是最流行的ORM 框架。

pip  install  peewee

一個例子

import  peewee 
from  peewee  import  *

db  =  MySQLDatabase ( 'jonhydb' ,  user = 'john' ,  passwd = 'megajonhy' )

class  Book ( peewee . Model ): 
    author  =  peewee . CharField () 
    title  =  peewee . TextField ()

    class  Meta : 
        database  =  db

Book . create_table () 
book  =  Book ( author = "me" ,  title = 'Peewee is cool' ) 
book . save () 
for  book  in  Book . filter ( author = "me" ): 
    print ( book . title )

官方文檔:http://docs.peewee-orm.com/en/latest/peewee/installation.html

5、SQLAlchemy

 

如果想找一種既支持原生SQL,又支持ORM 的工具,那麼SQLAlchemy 是最好的選擇,它非常接近Java 中的Hibernate 框架。

from  sqlalchemy  import  create_engine 
from  sqlalchemy.orm  import  sessionmaker

from  sqlalchemy_declarative  import  Address ,  Base ,  Person

class  Address ( Base ): 
    __tablename__  =  'address' 
    id  =  Column ( Integer ,  primary_key = True ) 
    street_name  =  Column ( String ( 250 ))

engine  =  create_engine ( 'sqlite:///sqlalchemy_example.db' ) 
Base . metadata . bind  =  engine

DBSession  =  sessionmaker ( bind = engine ) 
session  =  DBSession ()

# Insert a Person in the person table 
new_person  =  Person ( name = 'new person' ) 
session . add ( new_person ) 
session . commit ()
 

 

 

轉貼自: 36大數據


留下你的回應

以訪客張貼回應

0

在此對話中的人們

YOU MAY BE INTERESTED