pymysql連線和操作Mysql資料庫

2021-08-28 22:05:19 字數 4939 閱讀 4689

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

pip install pymysql

建立connection

獲取cursor

執行增刪改查的操作

處理資料

關閉cursor

關閉connection

說明語法格式

conn = pymysql.connect(host=

none

, user=

none

, password="",

database=

none

, port=

0, db=

none

,charset=

'')

常用引數說明

引數名型別

說明host

string

mysql的伺服器位址

port

intmysql的埠號

user

string

使用者名稱passwd

string

密碼db

string

使用的資料庫

charset

string

連線字符集

返回值cursor

示例**

host =

'127.0.0.1'

port =

3306

user =

'root'

passwd =

'root'

db =

'python'

charset =

'utf8'

connection = pymysql.connect(host=host,

port=port,

user=user,

passwd=passwd,

db=db,

charset=charset)

其它方法

方法描述

begin()

開啟事務

commit()

提交事務

cursor(cursor=none)

建立乙個游標用來執行語句

ping(reconnect=true)

檢查連線是否存活,會重新發起連線

rollback()

回滾事務

close()

關閉連線

select_db(db)

選擇資料庫

show_warnings()

檢視warning資訊詳細

說明游標物件,用於執行查詢和獲取結果

核心方法

方法名說明

execute()

用於執行乙個資料庫的查詢命令

fetchone()

獲取結果集中的下一行

fetchmany(size)

獲取結果集中的下(size)行

fetchall()

獲取結果集中剩下的所有行

rowcount

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

close()

關閉游標

舉個栗子

1、執行查詢功能

with connection.cursor(

)as cursor:

sql =

'select * from home_user'

cursor.execute(sql)

results = cursor.fetchall(

) connection.commit(

)for results in results:

uid = results[0]

name = results[1]

password = results[2]

print

('**********使用者資訊***************'

)print

('使用者id: \n使用者名稱: \n密碼: '

.format(id

=uid, name=name, pwd=password)

)

詳細

方法描述

close()

關閉游標。

execute(query, args=none)

執行單條語句,傳入需要執行的語句,是string型別;同時可以給查詢傳入引數,引數可以是tuple、list或dict。執行完成後,會返回執行語句的影響行數,如果有的話。

executemany(query, args)

fetchone()

獲取下一行資料。

fetchall()

獲取所有資料。

fetchmany(size=none)

獲取幾行資料。

read_next()

獲取下一行資料。

callproc()

用來呼叫儲存過程。

mogrify()

引數化查詢,防止sql注入。

scroll(num,mode)

移動游標位置。

查詢資料

分頁查詢操作

def

find_by_page

(page, size)

:with pymysql.connect(host=host,

port=port,

user=user,

passwd=password,

charset=charset,

db=db_name)

as cursor:

sql =

"select * from t_addr limit{},{}"

.format

((page -1)

* size, size)

cursor.execute(sql)

user = cursor.fetchall(

)

事務操作

示例**

conn = pymysql.connect(

host=

'10.10.0.109'

, port=

3306

, user=

'mha'

, password=

'123456'

, database=

'sbtest'

, charset=

'utf8'

)cursor = conn.cursor(

)# 插入sql;

sql_insert =

"insert into t_user (userid,username) values (10,'user10')"

# 更新sql;

sql_update =

"update t_user set username = 'name91' where userid=9"

# 刪除sql;

sql_delete =

"delete from t_user where userid < 3"

# 把乙個事務放到乙個try塊裡,如果出現異常就回滾;

try:

# 開啟事務;

conn.begin(

) cursor.execute(sql_insert)

print

(cursor.rowcount)

cursor.execute(sql_update)

print

(cursor.rowcount)

cursor.execute(sql_delete)

print

(cursor.rowcount)

# 提交事務;

conn.commit(

)except exception as e:

# 若有異常就回滾;

conn.rollback(

)cursor.close(

)conn.close(

)

批量插入

示例**

# 測試事務 批量新增

deftest_batch_insert()

: conn = pymysql.connect(host=host,

port=port,

user=user,

passwd=password,

charset=charset,

db=db_name)

cursor = conn.cursor(

)try

: sql =

'insert into t_addr(provice, city, county, deatil, userid) values (%s,%s,%s,%s,%s)'

li =

for i in

range(50

):('湖北省'

,'武漢市'

,'高新區'

+str

(i),

'智慧型園2135',6

))# 開啟事物

conn.begin(

) cursor.executemany(sql, li)

# 提交

conn.commit(

)except exception as e:

conn.rollback(

)print

(e)# 報錯事務回滾

finally

:# 關閉連線

cursor.close(

) conn.close(

)

Python使用PyMySQL連線MySQL資料庫

目錄 環境要求 安裝 示例mysql 版本 因為我們本地安裝python的時候,一般都會安裝好pip工具,所以我們可以直接使用pip命令安裝pymysql 如果不會安裝python的朋友們可以看下我的安裝python文章 pip install pymysql出現以下提示就表示安裝成功了 windo...

Python使用pymysql鏈結mysql資料庫

先安裝pymysql如下圖 author pythontab.com 可有可無 匯入pymysql的包 import pymysql try 獲取乙個資料庫連線,注意如果是utf 8型別的,需要制定資料庫 conn pymysql.connect host localhost user root p...

php連線mysql總結 php操作mysql小結

連線資料庫 設定文件顯示編碼 header content type text html charset utf 8 if con mysql connect localhost root 1234 elseelseelse echo 插入失敗,原因 mysql error 查詢 4fetch函式m...