一、写函数的原因

  写这个函数的原因就是为了能够不每次在用Python用数据库的时候还要在写一遍  做个通用函数做保留,也给大家做个小小的分享,函数不是最好的,希望有更好的代码的朋友能提出 互相学习

二、函数代码

  PS:代码是用Python3.6 写的

import pymysql

class mysql (object):
def __init__(self, dbconfig):
"""
初始化连接信息
:param dbconfig: 连接信息的字典
"""
self.host = dbconfig['host']
self.port = dbconfig['port']
self.user = dbconfig['user']
self.passwd = dbconfig['passwd']
self.db = dbconfig['db']
self.charset = dbconfig['charset']
self._conn = None
self._connect()
self._cursor = self._conn.cursor () def _connect(self):
"""
连接数据库方法
:return:
"""
try:
self._conn = pymysql.connect (host=self.host, port=self.port, user=self.user, passwd=self.passwd,
db=self.db, charset=self.charset)
except pymysql.Error as e:
print(e) def query(self, sql):
try:
result = self._cursor.execute (sql)
except pymysql.Error as e:
print(e)
result = False
return result def select(self, table, column='*', condition=''):
"""
查询数据库方法
:param table: 库里面的表
:param column: 列字段
:param condition: 条件语句 (where id=1)
:return:
"""
condition = ' where ' + condition if condition else None
if condition:
sql = "select %s from %s %s" % (column, table, condition)
# print(sql)
else:
sql = "select %s from %s" %(column, table)
# print(sql)
self.query (sql)
return self._cursor.fetchall() def insert(self,table,tdict):
"""
插入数据库方法,replace去重插入 insert不去重插入
:param table: 表名
:param tdict: 要插入的字典
:return:
"""
column = ''
value = ''
for key in tdict:
column += ',' + key
value += "','" + tdict[key]
column = column[1:]
value = value[2:] + "'" sql = "replace into %s(%s) values(%s)" %(table,column,value) # 去重
# sql = "insert into %s(%s) values(%s)" %(table,column,value) # 不去重
self._cursor.execute(sql)
self._conn.commit()
return self._cursor.lastrowid def update(self,table,tdict,condition=''):
"""
更新数据库方法
:param table: 表名
:param tdict: 更新数据库数据字典
:param condition: 条件语句 (where id=1)
:return:
"""
if not condition:
print('must have id')
exit()
else:
condition = 'where ' + condition
value = ''
for key in tdict:
value += ",%s='%s'" %(key,tdict[key])
value = value[1:]
sql = "update %s set %s %s" %(table,value,condition)
# print(sql)
self._cursor.execute(sql)
self._conn.commit()
return self.affected_num() def delete(self,table,condition=''):
"""
删除方法
:param table: 表名
:param condition: 条件语句 (where id=1)
:return:
"""
condition = ' where ' + condition if condition else None
sql = "delete from %s %s" %(table,condition)
# print(sql)
self._cursor.execute(sql)
self._conn.commit()
return self.affected_num() def all(self,*args):
"""
可以执行所有的SQL语句 相当于登录到数据库执行,就是返回结果没有做处理 后期会更新
:param args: SQL 语句(select * from ssh)
:return:
"""
sql = input("请输入SQL语句>>:")
sql = "%s" %sql
self._cursor.execute (sql)
self._conn.commit ()
return self._cursor.fetchall () def rollback(self):
"""
数据库的事务
:return:
"""
self._conn.rollback() def affected_num(self):
"""
受影响的条数
:return:
"""
return self._cursor.rowcount def int_to_ip_or_ip_to_int(self,method,num,ip=''):
"""
主要是对数据库的IP和数值之间的转换
:param method: 转换方法两种(inet_ntoa,inet_aton)
:param num: 数值
:param ip: IP地址
:return:
"""
if method == 'inet_ntoa':
sql = "select %s(%s)" %(method,num)
elif method == 'inet_aton':
sql = "select %s(%s)" %(method,ip)
self.query(sql)
return self._cursor.fetchall() def __del__(self):
"""
关闭连接
:return:
"""
try:
self._cursor.close ()
self._conn.close ()
except:
pass def close(self):
"""
关闭连接
:return:
"""
self.__del__ () # 函数的使用
if __name__ == '__main__':
dbconfig = {
'host': '192.168.163.129', # MySQL地址
'port': 3306, # 端口
'user': 'root', # 用户名
'passwd': '123456', # 密码
'db': 'com_hosts', # 数据库
'charset': 'utf8', # 字符集
}
db = mysql (dbconfig) # 初始化函数 # 查询
print(db.select ('ssh'))
# 更新
print(db.update('ssh', tdict, 'Id=2'))
# 插入
print(db.insert('ssh',tdict))
# 删除
print(db.delete('ssh','Id=6')) # 执行SQL语句
while True:
a = db.all()
for i in a:
print(i)
db.close()

三、未实现功能(后续更新)

  其实代码的结果最好都是元祖,没有对结果进行数据格式化显示,后期会更新,大家用的时候根据需求对数据进行一些处理就好了,其实在公司是想写个MySQL的管理平台的,以后写好了会更新,也希望大家一起学习,可以QQ我

pymysql模块使用的更多相关文章

  1. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  2. python实战第一天-pymysql模块并练习

    操作系统 Ubuntu 15.10 IDE & editor JetBrains PyCharm 5.0.2 ipython3 Python版本 python-3.4.3 安装pymysql模 ...

  3. pymysql 模块介绍

    pymysql模块是python与mysql进行交互的一个模块. pymysql模块的安装: pymysql模块的用法: import pymysql user=input('user>> ...

  4. Mysql(六):数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

  5. python如何使用pymysql模块

    Python 3.x 操作MySQL的pymysql模块详解 前言pymysql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而M ...

  6. MySQL之pymysql模块

    MySQL之pymysql模块   import pymysql #s链接数据库 conn = pymysql.connect( host = '127.0.0.1', #被连接数据库的ip地址 po ...

  7. PyMySQL模块的使用

    PyMySQL介绍 PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2系列中则使用mysqldb.Django中也可以使用PyMySQL连接MySQL数据库. ...

  8. MySQL学习12 - pymysql模块的使用

    一.pymysql的下载和使用 1.pymysql模块的下载 2.pymysql的使用 二.execute()之sql注入 三.增.删.改:conn.commit() 四.查:fetchone.fet ...

  9. 数据库入门-pymysql模块的使用

    一.pymysql模块安装 由于本人的Python版本为python3.7,所以用pymysql来连接数据库(mysqldb不支持python3.x) 方法一: #在cmd输入 pip3 instal ...

  10. Python连接MySQL数据库之pymysql模块使用

    安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...

随机推荐

  1. hdu-1124(数学问题,求n!的尾零的个数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1124 思路:每五个数1个0,5个5就2个0(不用管2,一定充足) #include<iostre ...

  2. Django入门与实践-第17章:保护视图(完结)

    http://127.0.0.1:8000/boards/1/ #boards/views.py from django.contrib.auth.decorators import login_re ...

  3. javascript对数组分页

    function pagination(pageNo, pageSize, array) { var offset = (pageNo - 1) * pageSize; return (offset ...

  4. 【Unity】2.0 第2章 Unity编辑器和基本操作

    分类:Unity.C#.VS2015 创建日期:2016-03-26 本章要点: 1.掌握Unity 5.3.4编辑器视图和菜单项及其含义,这是入门的最基础部分,必须掌握. 2.了解最基本的操作,先学 ...

  5. Redis配置总结

    一:常用配置 1.bind,格式为bind 127.0.0.1:这个是很重要的配置,如果bind 127.0.0.1则外部网络是访问不了的(如果外部网络要访问还要开放端口) 2.port,格式为por ...

  6. (二)spring-mvc-showcase 和 swagger-springmvc 的恩恩怨怨

    1. 搜索 spring showcase 就可以找到这篇 http://spring.io/blog/2010/07/22/spring-mvc-3-showcase 就是教你如何使用spring ...

  7. 事务不起作用 Closing non transactional SqlSession

    In proxy mode (which is the default), only external method calls coming in through the proxy are int ...

  8. SwapBuffers的等待,虚伪的FPS(转)

    FPS在实时渲染中扮演着一个重要的角色,也许你会去笑一个不懂FPS是什么的游戏新手,但也许,这只是五十步笑一百步罢了.你能读懂SwapBuffers的深情等待吗?——ZwqXin.com frames ...

  9. Java对象的serialVersion序列化和反序列化

    Java基础学习总结——Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种 ...

  10. Python 爬虫实战—盘搜搜

    近期公司给了个任务:根据关键搜索百度网盘共享文件并下载. 琢磨了几天写下了一段简单的demo代码,后期优化没有处理. 主要的思路:(1)根据关键字爬取盘搜搜的相关信息 (2)解析并获取盘搜搜跳转到百度 ...