python 資料庫的封裝

2021-09-25 04:59:28 字數 3043 閱讀 7951

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

import os

import sqlite3

defjudge_sql

(sql)

:'''判斷sql型別'''

sql = sql.strip(

).lower(

) ret =

'fetch'

if sql.startswith(

'select'):

# select

pass

elif sql.startswith(

'update'):

# update

ret =

'rowcount'

elif sql.startswith(

'delete'):

# delete

ret =

'rowcount'

elif sql.startswith(

'insert'):

# insert

ret =

'rowcount'

else

:# create-table, drop-table

ret =

'table'

return ret

defdb_execute

(sql, params=

none

, fetch_type=

'one'

, many=

false

, db_file=

none):

''' 執行資料庫操作

sql: sql語句

params: sql語句需要的引數,預設為空(none)

fetch_type: 當執行查詢語句(select)時,獲取資料的方法,有以下幾種取值情況

'one': 呼叫 fetchone(),預設

'all': 呼叫 fetchall()

正整數n: 表示要獲取的資料行數,呼叫 fetchmany(n)

many: 是否執行 executemany(),預設否,執行 execute()

db_file: 資料庫檔案,預設為啟動目錄下的 'notebook.db'

'''if db_file is

none

: db_file = os.path.join(os.getcwd(),

'notebook.db'

)# 連線資料庫

conn = sqlite3.connect(db_file)

# 修改查詢資料返回格式

defdict_factory

(cursor, row)

:'''修改查詢格式'''

d =for idx, col in

enumerate

(cursor.description)

: d[col[0]

]= row[idx]

return d

conn.row_factory = dict_factory

# 建立游標

cur = conn.cursor(

)# 執行操作

if many:

if params is

none

: params =

cur.executemany(sql, params)

else

:if params is

none

: params =()

cur.execute(sql, params)

# 判斷sql型別

sql_type = judge_sql(sql)

ret =

none

# 返回值

if sql_type ==

'rowcount'

:# 修改表的語句

# 返回受影響的行數

ret = cur.rowcount

# 提交修改

conn.commit(

)elif sql_type ==

'fetch'

:# 查詢資料的語句,需要呼叫fetch開頭的方法,獲取資料

if fetch_type ==

'one'

:# 查詢一條資料

ret = cur.fetchone(

)elif fetch_type ==

'all'

:# 查詢所有資料

ret = cur.fetchall(

)else

:# 查詢n條資料

ret = cur.fetchmany(fetch_type)

else

:# 建立表的語句,忽略返回值

pass

# 關閉游標

cur.close(

)# 關閉連線

conn.close(

)return ret

if __name__ ==

'__main__'

:# 建立tag表

sql_crete_tag =

''' create table `tb_tag` (

`id` integer primary key autoincrement,

`name` text not null unique

)'''

db_execute(sql_crete_tag)

# 建立note表

sql_create_note =

''' create table `tb_note` (

`id` integer primary key autoincrement,

`title` text not null,

`content` text,

`tags` text,

`day` text not null,

`pwd` text

)'''

db_execute(sql_create_note)

python資料庫封裝的辦法

匯入pymysql 框架,可以用 pipimport pymysql 資料庫封裝方法 class mysqlhelp object config def init self self.connection none self.cursor none 該函式用來從資料庫表中查詢一行資料 def get...

十四 python資料庫的封裝

import pymysql 查 所資料 defget all sql conn pymysql.connect host localhost user root password root database db6 cur conn.cursor cursor pymysql.cursors.di...

python 對ACCESS資料庫操作封裝模組

coding utf 8 by adengou 2016 01 02 programe python3.4.4 import os import json import win32com.client access資料模組 class access model def init self,datau...