一、写函数的原因

  写这个函数的原因就是为了能够不每次在用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. css样式记忆

    text-indent: 2em;   //开头空两格: display : none;    //隐藏元素 background:#CCC;  //背景颜色 background: url(imag ...

  2. document.body和document.documentElement区别

    1.document.documentElement表示文档节点树的根节点,即<html> document.body是body节点 2. 页面具有 DTD,或者说指定了 DOCTYPE ...

  3. KbmMW 4.30.00 发布

    今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化.还有就是解决了我提交的几个有关 汉字处 ...

  4. 2018.07.12 atcoder Choosing Points(数学分析好题)

    传送门 一句话题意:给出n,d1,d2" role="presentation" style="position: relative;">n,d ...

  5. * 结束Activity

    public class MainActivity extends Activity   {       @Override       public void onCreate(Bundle sav ...

  6. 20155211 2016-2017-2 《Java程序设计》第七周学习总结

    20155211 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式中this的参考对象以及toString()的接受 ...

  7. 大文件webuploader的基本使用

    webuploader的简单使用 需要的文件   自备  百度很多 webuploader.js  uploader.swf  jQuery <!DOCTYPE html> <htm ...

  8. 信息管理代码分析<一>登录密码

    题解:这段代码的要求如下,输入一段字符密码(长度<=8)以二进制的形式存放在磁盘中,在输入时需要验证两次输入是否正确.第二个,登录.从磁盘中读取这个文件,然后再输入密码,看两者是否相同. 登录密 ...

  9. Hdu2102 A计划 2017-01-18 14:40 60人阅读 评论(0) 收藏

    A计划 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  10. PAT 甲 1005. Spell It Right (20) 2016-09-09 22:53 42人阅读 评论(0) 收藏

    1005. Spell It Right (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...