Python 封装MySQL类

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

  以后再也不用每次都重新写啦!

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import  MySQLdb
OperationalError  =  MySQLdb.OperationalError
class  MySQL:
     def  __init__( self ,host,user,password,port = 3306 ,charset = "utf8" ):
         self .host = host
         self .port = port
         self .user = user
         self .password = password
         self .charset = charset
         try :
             self .conn = MySQLdb.connect(host = self .host,port = self .port,user = self .user,passwd = self .password)
             self .conn.autocommit( False )
             self .conn.set_character_set( self .charset)
             self .cur = self .conn.cursor()
         except  MySQLdb.Error as e:
             print ( "Mysql Error %d: %s"  %  (e.args[ 0 ], e.args[ 1 ]))
                     
     def  __del__( self ):
         self .close()
                          
     def  selectDb( self ,db):
         try :
             self .conn.select_db(db)
         except  MySQLdb.Error as e:
             print ( "Mysql Error %d: %s"  %  (e.args[ 0 ], e.args[ 1 ]))
                          
     def  query( self ,sql):
         try :
             n = self .cur.execute(sql)
             return  n
         except  MySQLdb.Error as e:
             print ( "Mysql Error:%s\nSQL:%s"  % (e,sql))
                          
     def  fetchRow( self ):
         result  =  self .cur.fetchone()
         return  result
                          
     def  fetchAll( self ):
         result = self .cur.fetchall()
         desc  = self .cur.description
         =  []
         for  inv  in  result:
             _d  =  {}
             for  in  range ( 0 , len (inv)):
                 _d[desc[i][ 0 ]]  =  str (inv[i])
                 d.append(_d)
         return  d
                          
     def  insert( self ,table_name,data):
         columns = data.keys()
         _prefix = "".join([ 'INSERT INTO `' ,table_name, '`' ])
         _fields = "," .join(["".join([ '`' ,column, '`' ])  for  column  in  columns])
         _values = "," .join([ "%s"  for  in  range ( len (columns))])
         _sql = " ".join([_prefix," ( ",_fields," ) VALUES ( ",_values," )"])
         _params = [data[key]  for  key  in  columns]
         return  self .cur.execute(_sql, tuple (_params))
                        
     def  update( self ,tbname,data,condition):
         _fields = []
         _prefix = "".join([ 'UPDATE `' ,tbname, '`' , 'SET' ])
         for  key  in  data.keys():
             _fields.append( "%s = %s"  %  (key,data[key]))
         _sql = " ".join([_prefix ,_fields, " WHERE", condition ])
                            
         return  self .cur.execute(_sql)
                        
     def  delete( self ,tbname,condition):
         _prefix = "".join([ 'DELETE FROM  `' ,tbname, '`' , 'WHERE' ])
         _sql = "".join([_prefix,condition]) 
         return  self .cur.execute(_sql)
                          
     def  getLastInsertId( self ):
         return  self .cur.lastrowid
                          
     def  rowcount( self ):
         return  self .cur.rowcount
                          
     def  commit( self ):
         self .conn.commit()
                        
     def  rollback( self ):
         self .conn.rollback()
                          
     def  close( self ):
         self .cur.close()
         self .conn.close()
                            
if  __name__ = = '__main__' :
     n = MySQL( '127.0.0.1' , 'root' , '123456' , 3306 )
     n.selectDb( 'test' )
     tbname = 'map'
     a = ({ 'id' : 3 , 'x' : 3 , 'y' : 3 },{ 'id' : 4 , 'x' : 4 , 'y' : 4 },{ 'id' : 5 , 'x' : 5 , 'y' : 5 })
     for  in  a:
         n.insert(tbname,d)
     n.commit()


 一个重量级的MySQL-Python 封装类:facebook python mysql






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1269034,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
4月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
951 1
|
8月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
227 11
|
11月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
582 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
9月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
238 1
|
10月前
|
SQL 关系型数据库 MySQL
Python中使用MySQL模糊查询的方法
本文介绍了两种使用Python进行MySQL模糊查询的方法:一是使用`pymysql`库,二是使用`mysql-connector-python`库。通过这两种方法,可以连接MySQL数据库并执行模糊查询。具体步骤包括安装库、配置数据库连接参数、编写SQL查询语句以及处理查询结果。文中详细展示了代码示例,并提供了注意事项,如替换数据库连接信息、正确使用通配符和关闭数据库连接等。确保在实际应用中注意SQL注入风险,使用参数化查询以保障安全性。
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
1172 15
|
12月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
跟我从0学Python——类的继承和多态
类的继承和多态 —— 面向对象编程的扩展与灵活性
|
搜索推荐 Python
Python学习 -- 类的继承
Python学习 -- 类的继承
117 0

推荐镜像

更多