Python数据库工具类MySQLdb使用
# -*- coding: utf-8 -*-
#mysqldb
import time, MySQLdb
#连接
conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="test",charset="utf8")
cursor = conn.cursor()
#删除表
sql = "drop table if exists user"
cursor.execute(sql)
#创建
sql = "create table if not exists user(name varchar(128) primary key, created int(10))"
cursor.execute(sql)
#写入
sql = "insert into user(name,created) values(%s,%s)"
param = ("aaa",int(time.time()))
n = cursor.execute(sql,param)
print 'insert',n
#写入多行
sql = "insert into user(name,created) values(%s,%s)"
param = (("bbb",int(time.time())), ("ccc",33), ("ddd",44) )
n = cursor.executemany(sql,param)
print 'insertmany',n
#更新
sql = "update user set name=%s where name='aaa'"
param = ("zzz")
n = cursor.execute(sql,param)
print 'update',n
#查询
n = cursor.execute("select * from user")
for row in cursor.fetchall():
print row
for r in row:
print r
#删除
sql = "delete from user where name=%s"
param =("bbb")
n = cursor.execute(sql,param)
print 'delete',n
#查询
n = cursor.execute("select * from user")
print cursor.fetchall()
cursor.close()
#提交
conn.commit()
#关闭
conn.close()
封装类操作
此处ConfigUtils工具类为Python配置工具类ConfigParser使用提供。在使用数据库连接时,建议每次调用利用try finally机制,做好资源回收。在对于异常处理时,其实不建议像如此处理。
class DButils(object):
def __init__(self,filename,section):
super(DButils, self).__init__()
#read config
cfg = ConfigUtils(filename).config
self.cfg = cfg
self.section = section
#init mysql connection
self.conn= MySQLdb.connect(
host=cfg.get(section,'host'),
port = cfg.getint(section,'port'),
user=cfg.get(section,'user'),
passwd=cfg.get(section,'passwd'),
db=cfg.get(section,'db'),
connect_timeout=cfg.getint(section,'connect_timeout')
)
self.cur = self.conn.cursor()
def fetchmany(self,sql):
sql = sql.replace('{$db}',self.cfg.get(self.section,'db'))
try:
return self.cur.fetchmany(self.cur.execute(sql))
except Exception, e:
print traceback.print_exc()
print sql
def fetchone(self,sql):
sql = sql.replace('{$db}',self.cfg.get(self.section,'db'))
try:
self.cur.execute(sql)
return self.cur.fetchone()
except Exception, e:
print traceback.print_exc()
print sql def create(self,sql):
try:
self.cur.execute(sql)
self.conn.commit()
except Exception, e:
print traceback.print_exc() def is_table_exit(self,tableName):
show_sql = 'show tables;'
try:
return tableName in self.cur.fetchmany(self.cur.execute(show_sql))
except Exception,e:
print traceback.print_exc()
def close_db(self):
self.cur.close()
self.conn.close() db = DButils('ini.cfg','src_db')
try:
db.fetchone('select * from table limit 1')
finally:
db.close_db()
Python数据库工具类MySQLdb使用的更多相关文章
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...
- Java调用Python脚本工具类
[本文出自天外归云的博客园] 在网上查了很多方法都不成功,在google上搜到一篇文章,做了一些小修改,能够处理中文输出.提取一个运行python脚本的Java工具类如下: package com.a ...
- 工具类之数据库工具类:DBUtil(採用反射机制)
常常操作数据库的码农们一定知道操作数据库是一项非常复杂的工作.它不仅要解决各种乱码的问题还要解决各种数据表的增删改查等的操作. 另外每次操作数据库都要用到数据库连接.运行SQL语句.关闭连接的操作.所 ...
- JDBC-自定义数据库工具类(DBService)
写在前面的话: (1)使用JDBC,必须要使用对应的jar包,该笔记中使用jar包:mysql-connector-java-5.1 .6-bin.jar (2)使用连接池,一定 ...
- Java课程设计---创建数据库工具类
1.传统的数据库操作 package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import ...
- 数据库工具类 JdbcUtils
什么时候自己创建工具类 如果一个功能经常用到 我们建议把这个功能做成工具类 创建JdbcUtils包含三个方法 1: 把几个字符串 定义为常量 2:得到数据库连接getConnection(); 3 ...
- python 数据库操作类
#安装PyMySQL:pip3 install PyMySQL #!/usr/bin/python3 #coding=utf-8 #数据库操作类 from datetime i ...
随机推荐
- Java多线程及线程状态转换
以下内容整理自:http://blog.csdn.net/wtyvhreal/article/details/44176369 线程:是指进程中的一个执行流程. 线程与进程的区别:每个进程都需要操作 ...
- OpenCV批量读入(处理)
#include <windows.h> #include <iostream> #include <opencv2/opencv.hpp> using names ...
- Spring @ControllerAdvice @ExceptionHandler 全局处理异常
对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚. 如此一来, ...
- 解题5(StringMerge1)
题目描述 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串 ...
- Jmeter(二十五)常见问题(转载)
转载自 http://www.cnblogs.com/yangxia-test 收集工作中JMeter遇到的各种问题 1. JMeter的工作原理是什么? 向服务器提交请求:从服务器取回请求返回 ...
- python--第二天总结
一.作用域只要变量在内存中存在,则就可以使用.(栈) 二.三元运算result = 值result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result ...
- java面试:手写代码
二分查找法. /** * 二分查找法:给定一组有序的数组,每次都从一半中查找.直到找到要求的数据. * 主要是得找到下标的表示方法. */ public class BinaryFind { /** ...
- poj1308(并查集)
题目链接:http://poj.org/problem;jsessionid=436A34AE4BE856FB2DF9B264DCA9AA4E?id=1308 题意:给定一些边让你判断是否构成数. 思 ...
- numpy.random.uniform()
numpy.random.uniform均匀分布 2018年06月19日 23:28:03 徐小妹 阅读数:4238 numpy.random.uniform介绍: 1. 函数原型: numpy ...
- 【python中单链表的实现】——包括初始化、创建、逆序、遍历等
# coding=utf-8 class mynode(object): def __init__(self, data, nextnode = None): self.data = data sel ...