连接数据库-stone
# -*- 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的更多相关文章
- react+redux教程(八)连接数据库的redux程序
前面所有的教程都是解读官方的示例代码,是时候我们自己写个连接数据库的redux程序了! 例子 这个例子代码,是我自己写的程序,一个非常简单的todo,但是包含了redux插件的用法,中间件的用法,连接 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- winForm连接数据库(sqlserver2005)
帮同学搞个课程设计winform连接sqlserver2005 具体方法: .添加App.config文件 2.在App.config文件中添加节点 <?xml version="1. ...
- c3p0连接数据库的3种方式
c3p0连接数据库的3种方式,这里以mysql为例 1. 直接用set方法设置参数, 基本方法 ComboPooledDataSource dataSource = new ComboPooledDa ...
- Java连接数据库的辣几句话
Java连接数据库的辣几句话 1.java连接Oracle数据库 使用以下代码三个步骤: 1.下载ojdbc.jar包并导入项目中.附下载地址:http://download.csdn.net/det ...
- 基础的jdbc连接数据库操作
首先我们知道在数据库中,我们可以直接写sql或者直接通过数据库工具操作数据,但是在java程序中我们是不能直接操作数据库数据的,所以这就引入了jdbc操作. 百度百科:JDBC(Java Data B ...
- Python 3.x 连接数据库(pymysql 方式)
==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...
- JDBC连接数据库
JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...
- java开发中JDBC连接数据库代码和步骤
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
随机推荐
- python之匿名函数和递归函数
递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数. 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数. <2>递归函数的作用 ...
- MPI Hello World
▶<并行程序设计导论>第三章(用 MPI 进行分布式内存编程)的第一个程序样例. ● 代码 #include <stdio.h> #include <string.h& ...
- SQLSERVER数据库迁移的方法
数据库迁移两种方案:https://www.cnblogs.com/mcgrady/p/7614491.html 方案一 1,先将源服务器上的数据库文件打包(包括mdf和ldf文件),并且复制到目标服 ...
- Mysql 开启Federated引擎以及使用
FEDERATED是其中一个专门针对远程数据库的实现.但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中通过这个引擎可以实现类似Oracle 下DBLINK的远程 ...
- 微信小程序注册身份证验证
// 校验身份证号 //校验码校验 checkCode: function (val) { var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2])) ...
- 【转】Maven中-DskipTests和-Dmaven.test.skip=true的区别
主要区别是:是否编译测试类 -DskipTests:编译测试类,但不运行 -Dmaven.test.skip=true:不编译.不运行 转自 http://zephiruswt.blog.51cto. ...
- SQL2014还原到2008
请使用with move选项来标识该文件的有效位置 sqlserver用命令还原数据库 restore database TT from disk='E:\test.bak' ...
- Redis 配置节
Redis 后面的配置基于4.0.9版本=>>>不指定版本信息的配置说明都是耍流氓 比如在4.0.9中没有vm相关的及glueoutputbuf的配置信息 部分常用配置节(后面有详细 ...
- UI5-文档-1-前言
主要是将SAP UI5官网文档做下了解,相关内容请查阅:https://sapui5.hana.ondemand.com/#/topic 设置您的开发环境并阅读我们的教程.它们使用交互式格式中的实际示 ...
- Python 3 学习笔记(2)
输入输出 str() 函数人类可读,repr() 解释器可读 rjust() 靠右,ljust() 靠左,center() 居中.zfill() 填0. 名字空间 名字到对象的映射关系被称为名字空间. ...