Python對SQL操作類的封裝

2021-10-01 13:16:33 字數 3411 閱讀 9318

python連線資料庫進行操作時,如果封裝相關操作,需要時直接進行呼叫,可以避免執行sql操作時的重複**書寫。

import pymysql

class

dbmysql

:# 引數用於連線資料庫

def__init__

(self, host, port, user, passwd, database, charset)

: self.host = host

self.port = port

self.user = user

self.passwd = passwd

self.database = database

self.charset = charset

self.cur =

none

self.conn =

none

def

connect_db

(self)

: self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd,

database=self.database, charset=self.charset)

# 連線成功就獲取游標

if self.conn:

self.cur = self.conn.cursor(

)

def

close_db

(self)

:if self.conn:

if self.cur:

self.cur.close(

) self.conn.close(

)

def

find

(self, sql,

*args)

: datas =

none

try:

# 連線資料庫

self.connect_db(

)# 執行查詢操作

self.cur.execute(sql, args)

# 獲取查詢結果

datas = self.cur.fetchall(

)except exception as e:

print

(e)finally

: self.close_db(

)return datas

def

insert

(self, table_name,

*args)

:# 對輸入的引數進行處理,使sql合法化,否則無法進行插入操作。

# 數值型別需要轉換為字串,字串型別需要在外層加引號,null型別需要去掉外層引號。

data =

",".join(

[x if x !=

'"null"'

else

eval

(x)for x in

[str

(ele)

ifisinstance

(ele,

int)

else

'"%s"'

% ele for ele in args]])

sql =

"insert into %s values(%s)"

%(table_name, data)

print

(sql)

try:

# 連線資料庫

self.connect_db(

)# 執行插入語句

self.cur.execute(sql)

# 提交

self.conn.commit(

)except exception as e:

print

(e)finally

:# 關閉資料庫連線

self.close_db(

)

def

delete

(self, sql,

*args)

: self.__execute_sql(sql, args)

defupdate

(self, sql,

*args)

: self.__execute_sql(sql, args)

# 更新和刪除操作類似,定義私有方法執行

def__execute_sql

(self, sql,

*args)

:try

:# 連線資料庫

self.connect_db(

)# 執行sql語句

self.cur.execute(sql, args)

# 提交

self.conn.commit(

)except exception as e:

print

(e)# 出現異常,不提交而是回滾

self.conn.rollback(

)finally

:# 關閉資料庫連線

self.close_db(

)

from utils import dbmysql

if __name__ ==

'__main__'

: db = dbmysql(host=

"127.0.0.1"

, port=

3306

, user=

"root"

, passwd=

"123456"

, database=

"testdb"

, charset=

"utf8"

) datas = db.find(

"select * from emp where ename= %s",[

"smith",]

)print

(datas)

db.insert(

"emp"

,7759

,"lucy1"

,"clerk"

,7882

,"1994-11-10"

,2000

,"null",30

) db.delete(

"delete from emp where ename=%s",[

"lucy"])

db.update(

"update emp set sal=100 where ename=%s",[

"nick"

])

Golang 對MongoDB的操作簡單封裝

golang 對mongodb的操作簡單封裝 使用mongodb的go驅動庫 mgo,對mongodb的操作做一下簡單封裝 初始化var globals mgo.session func init globals s 複製 func init 資料庫位址 dbhost mongodb timeout...

python封裝的方法 Python類和封裝方法

我是oop新手,這是我建立python類的第一次嘗試。我試圖使我的3個變數私有化,以便只有方法更新資訊 強制封裝 似乎如果我從類中刪除setters和getters方法,它對我的 沒有影響 一定是初始化器方法在做這項工作嗎?我能做些什麼來改善這一點?謝謝。在 編輯 我已經更新了我的 並刪除了初始化。...

PHP對類的操作

一直都想寫乙個類似與檢測使用的system。現在估計有機會了。可以好好計畫下。今天看了下php類這塊的東西。寫了段 貼一下,以後很好理解!header cache control no cache,must revalidate flush class web select class web po...