久久99国产精品尤物|久久黄色视频二区|三级在线播放试看无码一区二区|国产综合在线观看精品12

電話:+86 574 88168918 郵箱:sales@aliance.cn

首頁-新聞動態-新聞詳情

用 Python 連接 MySQL 的幾種姿勢

發布時間(jian):作者:cobinet瀏覽(lan):366次來(lai)源:jifang360
CobiNet(寧波)推薦文章:

盡(jin)管很多 NoSQL 數(shu)據(ju)(ju)庫(ku)近幾年(nian)大放異彩,但是(shi)像 MySQL 這樣(yang)的關系型數(shu)據(ju)(ju)庫(ku)依然是(shi)互聯網(wang)的主(zhu)流數(shu)據(ju)(ju)庫(ku)之一(yi),每個(ge)學(xue) Python 的都(dou)有必要學(xue)好(hao)一(yi)門數(shu)據(ju)(ju)庫(ku),不(bu)管你是(shi)做(zuo)數(shu)據(ju)(ju)分(fen)析,還是(shi)網(wang)絡爬蟲,Web 開(kai)發、亦或是(shi)機器學(xue)習,你都(dou)離不(bu)開(kai)要和(he)數(shu)據(ju)(ju)庫(ku)打交(jiao)道,而 MySQL 又是(shi)最流行(xing)的一(yi)種數(shu)據(ju)(ju)庫(ku),這篇文章介紹(shao) Python 操作 MySQL 的幾種方(fang)式,你可以在實際開(kai)發過程中(zhong)根據(ju)(ju)實際情況合(he)理選擇。

1、MySQL-python

MySQL-python 又叫 MySQLdb,是(shi) Python 連接 MySQL 最流(liu)行的(de)一個驅(qu)動,很多框(kuang)架(jia)都也是(shi)基于此庫進行開發,遺憾(han)的(de)是(shi)它只支持 Python2.x,而且安裝(zhuang)的(de)時候有很多前置條(tiao)件,因為(wei)它是(shi)基于C開發的(de)庫,在 Windows 平(ping)臺安裝(zhuang)非(fei)常(chang)不友(you)好(hao),經(jing)常(chang)出現失敗的(de)情況,現在基本不推薦使用(yong),取(qu)代的(de)是(shi)它的(de)衍生(sheng)版本。

# 前置條件sudo apt-get install python-dev libmysqlclient-dev # Ubuntusudo yum install python-devel mysql-devel # Red Hat / CentOS# 安裝pip install MySQL-python

Windows 直接通過(guo)下載 exe 文(wen)件安裝(zhuang),公眾號(hao)回復(fu)「win」獲取下載鏈接

#!/usr/bin/pythonimport MySQLdbdb = 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

由(you)于(yu) MySQL-python 年久(jiu)失修,后來(lai)出(chu)現(xian)了它(ta)的 Fork 版本 mysqlclient,完全(quan)兼(jian)容 MySQLdb,同時支(zhi)持 Python3.x,是 Django ORM的依賴工具,如(ru)果你(ni)想使用原生 SQL 來(lai)操(cao)作數據庫(ku),那么推薦(jian)此(ci)驅動。安(an)裝方式和(he) MySQLdb 是一樣的,Windows 可以在 //www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 網站找(zhao)到 對應版本的 whl 包(bao)下載安(an)裝。

# Windows安裝pip install some-package.whl# linux 前置條件sudo apt-get install python3-dev # debian / Ubuntusudo yum install python3-devel # Red Hat / CentOSbrew install mysql-connector-c # macOS (Homebrew)pip install mysqlclient
3、PyMySQL

PyMySQL 是純 Python 實現的(de)(de)驅(qu)動,速度上比不(bu)上 MySQLdb,最大的(de)(de)特點可能(neng)就是它的(de)(de)安裝方式沒那(nei)么(me)繁瑣,同時也(ye)兼容 MySQL-python

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

一個例子

import pymysqlconn = 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

寫(xie)原生 SQL 的(de)(de)(de)過程(cheng)非常繁瑣,代(dai)碼(ma)重復,沒(mei)有(you)面向對(dui)象(xiang)思維,繼而(er)誕生了很(hen)多封裝 wrapper 包和 ORM 框架(jia),ORM 是(shi) Python 對(dui)象(xiang)與(yu)數(shu)據庫(ku)(ku)關(guan)系(xi)表(biao)的(de)(de)(de)一種(zhong)(zhong)映射(she)關(guan)系(xi),有(you)了 ORM 你(ni)不再需要寫(xie) SQL 語句。提高(gao)了寫(xie)代(dai)碼(ma)的(de)(de)(de)速度,同時兼(jian)容多種(zhong)(zhong)數(shu)據庫(ku)(ku)系(xi)統,如sqlite, mysql、postgresql,付出的(de)(de)(de)代(dai)價可能就是(shi)性能上的(de)(de)(de)一些損失。如果(guo)你(ni)對(dui) Django 自帶的(de)(de)(de) ORM 熟悉的(de)(de)(de)話,那么 peewee的(de)(de)(de)學(xue)習成(cheng)本(ben)幾乎為零。它是(shi) Python 中是(shi)最流行(xing)的(de)(de)(de) ORM 框架(jia)。

pip install peewee

一個例子

import peeweefrom peewee import *db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')class Book(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()
class Meta:
database = dbBook.create_table()book = Book(author= me , title='Peewee is cool')book.save()for book in Book.filter(author= me ):
print(book.title)

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

5、SQLAlchemy

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

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy_declarative import Address, Base, Personclass 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 = engineDBSession = sessionmaker(bind=engine)session = DBSession()# Insert a Person in the person tablenew_person = Person(name='new person')session.add(new_person)session.commit()

現在差(cha)不多搞明白了(le)這(zhe)幾種(zhong)數據庫驅動的(de)優劣,接(jie)下來你就可以選擇(ze)其中的(de)一個進行(xing)系統的(de)學(xue)習再把它(ta)應(ying)用到項目中去了(le),祝(zhu)你學(xue)習開(kai)心,不懂的(de)可以咨詢我哈。

     

文章編輯:CobiNet(寧波)  
本公司專注于電訊配件,銅纜綜合布線系列領域產品研發生產超五類,六類,七類線,屏蔽模塊,配線架及相關(guan)模塊(kuai)配件的研發和生產。

歡迎來電咨詢0574 88168918,郵箱sales@aliance.cn,網址aliance.cn

相關新聞

 

?2016-2019寧波科博通信(xin)技術(shu)有限公司版權所有