# -*- 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. openstack 基镜像与差异镜像的整合

  2. url参数带点

    今天在处理一些接口的时候,发现了一些神奇bug. url路径参数/binbin没有问题 但是/jay.chou 发现查不到正确数据了. 其实是spring没有配置好参数带点的情况. RequestMa ...

  3. leetcode557

    public class Solution { public string ReverseWords(string s) { var list = s.Split(' ').AsEnumerable( ...

  4. leetcode415

    public class Solution { public string AddStrings(string num1, string num2) { //判断num1和num2的长度,进行对齐 i ...

  5. jquery ajax 赋值问题, 后面程序判断逻辑用

    添加async:false; 像 $.get() 等是没有async参数的, 所以需要用到如下 $.ajaxSetup({ async : false //这个意思是等这个ajax有了返回值后才会执行 ...

  6. 列表(ul ol dl)

    Title 1 2 3 1 2 3 a 1 2 b 1 2 <!DOCTYPE html> <html lang="en"> <head> &l ...

  7. Spring MVC 异常处理 - SimpleMappingExceptionResolver

    希望对一些异常统一处理,他将异常类名映射为视图名,即发生异常时使用对应的视图报告异常.

  8. 基于OpenGL编写一个简易的2D渲染框架-13 使用例子

    这是重构渲染器的最后一部分了,将会给出一个 demo,测试模板测试.裁剪测试.半透明排序等等: 上图是本次 demo 的效果图,中间的绿色图形展现的是模板测试. 模板测试 void init(Pass ...

  9. Inteiilj IDEA 团队代码格式规范

    目录 Intellij IDEA code format Tabs and Indents Spaces Wrapping and Braces Imports 更新 Intellij IDEA co ...

  10. list接口如何使用

    1集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集合是 ...