python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例
# 数据库配置文件
# cat gconf.py #encoding=utf-8
import json
# json里面的字典不能用单引号,一定要用双引号
USER_FILE='users.json' # mysql数据库连接信息
MYSQL_HOST = '192.168.3.91'
MYSQL_PORT = 3306
MYSQL_USER = 'root'
MYSQL_PASSWORD = 'root'
MYSQL_DB = 'cmdb'
MYSQL_CHARSET = 'utf8' # 邮件发送的信息
SMTP_SERVER_HOST='smtp.exmail.qq.com'
SMTP_SERVER_PORT=25
SMTP_USER='jack@qq.com'
# 邮箱客户端专用密码
SMTP_PWD='pass' # 接收邮件
ALARM_RECIVE = ['admin@163.com'] # app验证信息
APP_KEY = 'adI23SaE926DSslieo'
APP_SECRET = 'adI23SaE926DSslieo'
# 操作数据库增删改查的dbutils.py代码
#encoding=utf-8 import MySQLdb import gconf # 主类
class MysqlConnection(object):
def __init__(self, host, port, user, passwd, db, charset='utf8'):
self.__host = host
self.__port = port
self.__user = user
self.__passwd = passwd
self.__db = db
self.__charset = charset
self.__conn = None
self.__cur = None
self.__connect()
# 连接数据库
def __connect(self):
try:
self.__conn = MySQLdb.connect(host = self.__host, port = self.__port,\
user = self.__user, passwd = self.__passwd,\
db = self.__db, charset = self.__charset) self.__cur = self.__conn.cursor()
except BaseException as e:
print e def close(self):
# 在关闭连接之前将内存中的文件写入磁盘
self.commit()
if self.__cur:
self.__cur.close()
self.__cur = None if self.__conn:
self.__conn.close()
self.__conn = None
# 设置提交
def commit(self):
if self.__conn:
self.__conn.commit() def execute(self, sql, args = ()):
_cnt = 0
if self.__cur:
self.__cur.execute(sql, args)
return _cnt def fetch(self, sql, args = ()):
_cnt = 0
rt_list = []
# _cnt = self.execute(sql, args)
if self.__cur: _cnt = self.__cur.execute(sql, args)
rt_list = self.__cur.fetchall()
return _cnt, rt_list @classmethod
def execute_sql(cls, sql, args=(), fetch = True):
count = 0
rt_list = []
conn = MysqlConnection(host = gconf.MYSQL_HOST, port = gconf.MYSQL_PORT,\
user = gconf.MYSQL_USER, passwd = gconf.MYSQL_PASSWORD, db = gconf.MYSQL_DB,\
charset = gconf.MYSQL_CHARSET)
print sql
if fetch:
count, rt_list = conn.fetch(sql, args)
else:
count = conn.execute(sql, args)
conn.close()
print rt_list
return count, rt_list def execute_fetch_sql(sql, args = (), fetch = True):
return execute_sql(sql, args, fetch) def execute_commit_sql(sql, args = (), fetch = False):
return execute_sql(sql, args, fetch) # 区别在于是查询还是修改,增加,删除操作,用fetch来标识
def execute_sql(sql, args = (), fetch = True):
cur = None
conn = None
count = 0
rt = ()
try:
conn = MySQLdb.connect(host = gconf.MYSQL_HOST, port = gconf.MYSQL_PORT,\
user = gconf.MYSQL_USER, passwd = gconf.MYSQL_PASSWORD, db = gconf.MYSQL_DB,\
charset = gconf.MYSQL_CHARSET) cur = conn.cursor()
print 'dbutils sql:%s, args = %s' % (sql, args)
count = cur.execute(sql, args)
# 如果是查询
if fetch:
rt = cur.fetchall()
# if args:
# rt = cur.fetchone()
# else:
# rt = cur.fetchall()
else:
conn.commit() except BaseException, e:
print e
finally:
if cur:
cur.close()
if conn:
conn.close()
print 'dbutils:%s,%s' %(count,rt)
return count,rt # 批量插入数据库
def batch_execute_sql(sql, rt_list = []):
cur = None
conn = None
count = 0
rt = () try:
conn = MySQLdb.connect(host = gconf.MYSQL_HOST, port = gconf.MYSQL_PORT,\
user = gconf.MYSQL_USER, passwd = gconf.MYSQL_PASSWORD, db = gconf.MYSQL_DB,\
charset = gconf.MYSQL_CHARSET) cur = conn.cursor()
print sql
# 循环执行插入语句,一次性全部提交
for line in rt_list:
count += cur.execute(sql, line)
conn.commit() except BaseException, e:
print e
finally:
if cur:
cur.close()
if conn:
conn.close() return count # 测试代码
if __name__ == '__main__':
# conn = MysqlConnection(host = gconf.MYSQL_HOST, port = gconf.MYSQL_PORT,\
# user = gconf.MYSQL_USER, passwd = gconf.MYSQL_PASSWORD, db = gconf.MYSQL_DB,\
# charset = gconf.MYSQL_CHARSET) # # conn.execute('insert into user(username) values(%s)', ('jack123',))
# cnt, rt_list = conn.fetch('select * from user')
# print cnt,rt_list
# conn.close()
count, rt_list = MysqlConnection.execute_sql('insert into user(username) values(%s)',('tomkeeper',))
print rt_list
python操作mysql数据库增删改查的dbutils实例的更多相关文章
- Asp.Net操作MySql数据库增删改查
Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git 1.安装MySQL数据库 ...
- Python实现mysql数据库增删改查
利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装! 1. 环境配置 安装第三方包 ,导入模块 mysql.connector pip inst ...
- python2.7入门---操作mysql数据库增删改查
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口.Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: G ...
- Golang原生sql操作Mysql数据库增删改查
Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...
- python3操作mysql数据库增删改查
#!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root&q ...
- python操作mysql之增删改查
[insert] import MySQLdb conn = MySQLdb.connect(","08day5" ) cur = conn.cursor() #把数据放 ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- jsp-2 简单的servlet连接mysql数据库 增删改查
连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数 ...
随机推荐
- 全面理解JavaScript中的 this
全面理解JavaScript中的 this 上下文 VS 作用域 作用域(scope) 是在运行时代码中的某些特定部分中变量,函数和对象的可访问性.换句话 说,作用域决定了代码区块中变量和其他资源的可 ...
- Understanding Favicon
Favicon 简介 Favicon : 是favorites icon 的缩写,被称为website icon . page icon. urlicon. 最初定义一个favicon的方法是将一个名 ...
- java 中对象比较大小
java 中对象比较大小 java 中对象比较大小有两种方法 1:实现Comparable 接口 的 public int compareTo(T o) 方法: 2:实现Comparator 接口 的 ...
- HDU - 4553 约会安排(区间合并)
https://cn.vjudge.net/problem/HDU-4553 Description 寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的 ...
- you have mixed tabs and spaces.Fix This屏蔽
这个功能很影响vs的速度,解决办法(VS2010版本为例),将Fix Mixed Tabs改为OFF即可.
- udp_connect函数
#include <netdb.h> #include <stdlib.h> #include <unistd.h> #include <string.h&g ...
- Oracle SQL*Plus命令
登录数据库: 方式(1)当我们刚安装Oracle数据库时,登录账户时可以使用win+r 输入sqlplus,进入sqlplus命令窗口,然后输入用户名和密码,这里输入密码时不会有回显 方式(2)使用w ...
- Java中使用到的锁
同一进程 重入锁 使用ReentrantLock获取锁的时候回判断当前线程是否为获取锁的线程,如果是则将同步的状态+1,释放锁的时候则将状态-1,只有将同步状态的次数置为0的时候才会是最终释放锁. 读 ...
- asp.net core处理中文的指南
参考资料:https://docs.microsoft.com/en-us/aspnet/core/security/cross-site-scripting Customizing the Enco ...
- js开发模式
js中的开发模式进化史: js中有最初的只能由基本数据类型描述——>单例模式-->工厂模式-->构造函数模式-->原型模式-->各个模式相结合的混合模式,下面我会给大家逐 ...