Python MySQL 資料庫連線不同方式

2022-07-13 11:36:12 字數 4366 閱讀 3482

pymysql 驅動連線

什麼是 pymysql?

pymysql 是在 python3.x 版本中用於連線 mysql 伺服器的乙個庫,python2中則使用mysqldb。

pymysql 遵循 python 資料庫 api v2.0 規範,幷包含了 pure-python mysql 客戶端庫。

pymysql 安裝

在使用 pymysql 之前,我們需要確保 pymysql 已安裝。

如果還未安裝,我們可以使用以下命令安裝最新版的 pymysql:

$ pip3 install pymysql

如果你的系統不支援 pip 命令,可以使用以下方式安裝:

$ git clone

$ cd pymysql/

$ python3 setup.py install

2、如果需要制定版本號,可以使用 curl 命令來安裝:

$ # x.x 為 pymysql 的版本號

$ curl -l /tarball/pymysql-x.x | tar xz

$ cd pymysql*

$ python3 setup.py install

$ # 現在你可以刪除 pymysql* 目錄

注意:請確保您有root許可權來安裝上述模組。

例項(python 3.0+)

#!/usr/bin/python3

import pymysql

# 開啟資料庫連線

db = pymysql.connect("localhost","testuser","test123","testdb" )

# 使用 cursor() 方法建立乙個游標物件 cursor

cursor = db.cursor()

# 使用 execute() 方法執行 sql 查詢

cursor.execute("select version()")

# 使用 fetchone() 方法獲取單條資料.

data = cursor.fetchone()

print ("database version : %s " % data)

# 關閉資料庫連線

db.close()

mysql-connector 驅動

mysql-connector 是 mysql 官方提供的驅動器。

我們可以使用 pip 命令來安裝 mysql-connector:

python -m pip install mysql-connector

使用以下**測試 mysql-connector 是否安裝成功:

demo_mysql_test.py:

import mysql.connector

執行以上**,如果沒有產生錯誤,表明安裝成功。

建立資料庫連線

可以使用以下**來連線資料庫:

demo_mysql_test.py:

import mysql.connector

mydb = mysql.connector.connect(

host="localhost", # 資料庫主機位址

user="yourusername", # 資料庫使用者名稱

passwd="yourpassword" # 資料庫密碼

)print(mydb)

mysqldb庫來連線

mysqldb先支援python2.,不支援python3.。

mysqldb的安裝

mysqldb的安裝可以使用pip進行安裝:

pip install mysql-python==1.2.5

python對mysql進行操作

python與mysql進行連線-connection

建立連線的物件,建立python客戶端與資料庫網路連線

建立的基本方法mysqldb.connect(相關的引數),其中的主要引數有(host, user, passwd, port, db, charset),在這些引數中,只有port是數字型別,其他的引數都是字串型別。

對資料庫進行執行,獲取執行的結構-cursor

游標物件:用於執行查詢和獲取結果

cursor物件包含的方法如下:

引數名 說明

execute(command) 執行乙個資料庫查詢和命令

fetchone() 獲取結果集中的下一行

fetchmany() 獲取結果集中的下幾行

fetchall() 獲取結果集中的全部資訊

rowcount 最近的一次execute返回資料或影響的行數

close() 關閉游標物件

舉乙個例子

import mysqldb

conn = mysqldb.connect(

host = "127.0.0.1",

port = 3306,

user = "lee",

passwd = "123",

db = "lee",

charset = "utf8",

)cursor = conn.cursor()

sql_command = 'select * from user'

cursor.execute(sql_command)

rs = cursor.fetchall()

for ele in rs:

print 'userid : %d , username : %s' %ele

cursor.close()

conn.close()

讓python 3支援mysqldb的解決方法

原因mysqldb 只適用於python2.x,發現pip裝不上。它在py3的替代品是: import pymysql

pip install pymysql

django+mysql

而django預設的還是使用mysqldb:執行會報:importerror: no module named 'mysqldb'

解決:在站點的 __init__.py 檔案中新增

import pymysql

pymysql.install_as_mysqldb()

或在使用torndb的過程中發現其底層是對mysqldb的封裝,而mysqldb不支援python3.x

解決:安裝mysqlclient包,其完全相容mysqldb

pip install mysqlclient

解決了mysqldb問題後,使用torndb的query功能是報了新的錯誤,如下:

attributeerror: module 'itertools' has no attribute 'izip'

源**:

#! /usr/bin env python3

# -*- coding:utf-8 -*-

import torndb

config =

def query_all():

con = torndb.connection(**config)

results = con.query('select account from users')

con.close()

return results

print(query_all())

解決方案:更改con.query()中的源**。(按住ctrl點選con.query 目的是找到這個模組的源**)

按照下面的提示進行更改,並儲存。

def query(self, query, *parameters, **kwparameters):

"""returns a row list for the given query and parameters."""

cursor = self._cursor()

try:

self._execute(cursor, query, parameters, kwparameters)

column_names = [d[0] for d in cursor.description]

"""錯誤說itertools找不到izip模組。

因為我們使用的mysqlclient替代mysqldb,

所以使用zip_longest模組替代izip模組。

"""# 使用這一句替代下面一行**

# return [row(itertools.zip_longest(column_names, row)) for row in cursor]

return [row(itertools.izip(column_names, row)) for row in cursor]

finally:

cursor.close()

Python Mysql 資料庫操作

使用python 進行資料庫的操作 為了能運算元據庫,首先我們要有乙個資料庫,所以要首先安裝mysql,然後建立乙個測試資料庫python test用以後面的測試使用 create database python test charset utf8import mysqldbcon mysqldb....

Python MySQL 建立資料庫

要在mysql中建立資料庫,可使用 create database 語句 示例 建立乙個名為 mydatabase 的資料庫 import mysql.connector mydb mysql.connector.connect host localhost user 你的使用者名稱 passwd ...

Python MySQL 建立資料庫

建立資料庫 要在mysql中建立資料庫,可使用 create database 語句 示例建立乙個名為 mydatabase 的資料庫 import mysql.connector mydb mysql.connector.connect host localhost user 你的使用者名稱 pa...