# -*- coding:utf-8 -*-

import pymysql

class mysql:
def __init__(self, host, port, dbuser, dbpwd, dbname):
self.host = host
self.port = port
self.dbuser = dbuser
self.dbpwd = dbpwd
self.dbname = dbname
self._conn = None
self.Connect() # 默认链接数据库, 最后要调用关闭链接的函数Con_close()函数 def Connect(self):
if not self._conn:
# print('\033[33m 已创建数据库链接.......... \033[5m')
self._conn = pymysql.connect(host=self.host,
port=self.port,
user=self.dbuser,
passwd=self.dbpwd,
db=self.dbname,
use_unicode=True,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor) # cursorclass=pymysql.cursors.DictCursor
# MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,
# 无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行。
else:
print('\033[33m 链接数据库已存在,请直接操作!\033[5m')
pass def Con_close(self):
if self._conn:
# print('\033[33m 数据库链接已关闭!!! \033[5m')
self._conn.close()
self._conn = None
pass
pass def NewCursor(self):
cur = self._conn.cursor()
if cur:
return cur
else:
print('\033[33m #Error# Get New Cursor Failed \033[5m')
return None
pass def DelCursor(self, cur):
if cur:
cur.close()
pass
pass def Export(self, sql, file_name, colfg='\t\t'):
"""
将查询结果导出到外部文件中
:param sql:
:param file_name:
:param colfg:
:return:
"""
rt = self.Query(sql)
if rt:
with open(file_name, 'w') as fd:
for row in rt:
in_info = ''
for col in row:
in_info += str(col) + colfg
in_info += '\n'
fd.write(in_info) def Query(self, sql, debug=0):
"""
对数据库执行查询操作,sql为所需要执行的查询语句,debug控制是否显示查询的表结构(默认不查询即debug=0)
:param sql:
:param debug:
:return:
"""
rt = []
cur = self.NewCursor()
if not cur:
return rt
try:
cur.execute(sql)
while 1:
ts = cur.fetchone()
if ts is None:
break
rt.append(ts)
if debug:
filename = []
for field in cur.description:
filename.append(field[0])
print(filename)
# print('\033[33m Query Success!!! \033[5m')
except Exception as err:
print(err)
print('\033[33m Exec Sql failed: "{0}" \033[5m'.format(sql))
finally:
self.DelCursor(cur)
return rt def Exec(self, sql):
"""
对数据库执行增、删、改操作,传入需要执行的SQL语句
:param sql:
:return:
"""
rt = None
cur = self.NewCursor()
if not cur:
return rt
try:
cur.execute(sql)
# print('\033[33m update/delete/insert Success! \033[5m')
self._conn.commit()
except Exception as err:
print('\033[33m Exec Sql Failed: "{0}" \033[5m'.format(sql))
print(err)
cur.rollback()
finally:
self.DelCursor(cur)
return rt
 

连接数据库-stone的更多相关文章

  1. react+redux教程(八)连接数据库的redux程序

    前面所有的教程都是解读官方的示例代码,是时候我们自己写个连接数据库的redux程序了! 例子 这个例子代码,是我自己写的程序,一个非常简单的todo,但是包含了redux插件的用法,中间件的用法,连接 ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. winForm连接数据库(sqlserver2005)

    帮同学搞个课程设计winform连接sqlserver2005 具体方法: .添加App.config文件 2.在App.config文件中添加节点 <?xml version="1. ...

  4. c3p0连接数据库的3种方式

    c3p0连接数据库的3种方式,这里以mysql为例 1. 直接用set方法设置参数, 基本方法 ComboPooledDataSource dataSource = new ComboPooledDa ...

  5. Java连接数据库的辣几句话

    Java连接数据库的辣几句话 1.java连接Oracle数据库 使用以下代码三个步骤: 1.下载ojdbc.jar包并导入项目中.附下载地址:http://download.csdn.net/det ...

  6. 基础的jdbc连接数据库操作

    首先我们知道在数据库中,我们可以直接写sql或者直接通过数据库工具操作数据,但是在java程序中我们是不能直接操作数据库数据的,所以这就引入了jdbc操作. 百度百科:JDBC(Java Data B ...

  7. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  8. JDBC连接数据库

    JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...

  9. java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

随机推荐

  1. DBCP连接池配置常用参数说明

    参数 默认值 说明 username \ 传递给JDBC驱动的用于建立连接的用户名 password \ 传递给JDBC驱动的用于建立连接的密码 url \ 传递给JDBC驱动的用于建立连接的URL ...

  2. 命令查询职责分离(CQRS)模式

    参考: http://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html

  3. TP5常量

    预定义常量 EXT 类库文件后缀(.php) THINK_VERSION 框架版本号 路径常量 DS 当前系统的目录分隔符 THINK_PATH 框架系统目录 ROOT_PATH 框架应用根目录 AP ...

  4. 线程安全计算 AtomicLong

    一般如果我们自己写一个计数器方法,需要考虑线程安全问题,尤其高并发访问的时候. AtomicLong 已处理并发问题,直接使用.java.util.concurrent.atomic包提供多种线程安全 ...

  5. greenlet 实现手动协程切换

    from greenlet import greenlet def test1(): print('12') gr2.switch() #切换到gr2 print('34') gr2.switch() ...

  6. getitem, setitem, delitem (把类实例化成字典的类型)

    class Foo(object):     def __init__(self):         self.data = {} def __getitem__(self, key):        ...

  7. Redis 安装 和 启动

    Redis下载官网 http://download.redis.io/releases/  本人下载了stable版 1:安装步骤 ># wget http://download.redis.i ...

  8. libcurl 不支持https访问

    项目中使用libcurl 访问https的时候会报错,比如:“Unsupported protocol” 或者:“Protocol https not supported or disabled in ...

  9. WDA-FPM-2-APPLICATION-TABSTRIP(OIF)

    转载:https://www.cnblogs.com/sapSB/p/10081344.html   FPM二:简单的APPLICATION-TABSTRIP(OIF) 1.新建WDA程序ZLYFPM ...

  10. webserive学习记录3-eclipse创建webservice

    在用J2EE版的ECLIPSE学习WEBSERVICE的时候发现原来直接用该ECLIPSE就可以创建webservice,然后就自己动手用ECLIPSE自带的功能来建立WEBSERVICE服务端和客户 ...