# -*- 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...