一个可能有用的封闭PGSQL操作的PYTHON函数
URL:
http://www.linuxyw.com/517.html
一般操作:
import psycopg2 连接数据库 conn = psycopg2.connect(database=db_name,user=db_user,password=db_pass,host=db_ip,port=db_port) 建立游标 cursor = conn.cursor() 执行SQL语句 cursor.execute(sql) 提交 conn.commit() 关闭 conn.close()
import psycopg2
import logging
db_name = "****"
db_user = "****"
db_pass = "****"
db_ip = "****"
error_log = "****"
#定义日志输出格式
logging.basicConfig(level=logging.ERROR,
format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt = '%Y-%m-%d %H:%M:%S',
filename = error_log,
filemode = 'a')
def writeDb(sql,data):
"""
连接mysql数据库(写),并进行写的操作,如果连接失败,会把错误写入日志中,并返回false,如果sql执行失败,也会把错误写入日志中,并返回false,如果所有执行正常,则返回true
"""
try:
conn = psycopg2.connect(database=db_name,user=db_user,password=db_pass,host=db_ip,port=5432)
cursor = conn.cursor()
except Exception,e:
print e
logging.error('数据库连接失败:%s' % e)
return False
try:
cursor.execute(sql,data)
conn.commit() #提交事务
except Exception,e:
conn.rollback() #如果出错,则事务回滚
logging.error('数据写入失败:%s' % e)
return False
finally:
cursor.close()
conn.close()
return True
def readDb(sql):
"""
连接mysql数据库(从),并进行数据查询,如果连接失败,会把错误写入日志中,并返回false,如果sql执行失败,也会把错误写入日志中,并返回false,如果所有执行正常,则返回查询到的数据,这个数据是经过转换的,转成字典格式,方便模板调用,其中字典的key是数据表里的字段名
"""
try:
conn = psycopg2.connect(database=db_name,user=db_user,password=db_pass,host=db_ip,port=5432)
cursor = conn.cursor()
except Exception,e:
print e
logging.error('数据库连接失败:%s' % e)
return False
try:
cursor.execute(sql)
data = [dict((cursor.description[i][0], value) for i, value in enumerate(row)) for row in cursor.fetchall()] #转换数据,字典格式
except Exception,e:
logging.error('数据执行失败:%s' % e)
return False
finally:
cursor.close()
conn.close()
return data
一个可能有用的封闭PGSQL操作的PYTHON函数的更多相关文章
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]
原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇] 在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abor ...
- 一个非常有用的函数——COALESCE
原文:一个非常有用的函数--COALESCE 很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止, ...
- C51 一个非常有用的位操作 --- 其中一位置 0 其它位不变
C51 一个非常有用的位操作 --- 其中一位置 0 其它不变 C51 中经常操作位,以下方法就非常方便,来自 1 s &= ~(1 << j) /* 将变量s的第j位置成0,其余 ...
- java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...
- AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件
AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]
原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇] 在<上篇>中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭.对于<WCF技术 ...
- Mysql一个非常有用的内置函数今天碰到要把MySQL数据库中的varchar转换成date类型进
Mysql一个非常有用的内置函数 今天碰到要把MySQL数据库中的varchar转换成date类型进行时间的比较和查询.在网上找了找,发现MySQL也跟其他数据库一样有自己内置的转换函数:str_to ...
- go select 使得一个 goroutine 在多个通讯操作上等待。
select 语句使得一个 goroutine 在多个通讯操作上等待. select 会阻塞,直到条件分支中的某个可以继续执行,这时就会执行那个条件分支.当多个都准备好的时候,会随机选择一个. pac ...
- Numpy非常重要有用的数组合并操作
Numpy非常重要有用的数组合并操作 背景:在给机器学习准备数据的过程中,经常需要进行不同来源的数据合并的操作. 两类场景: 给已有的数据添加多行,比如增添一些样本数据进去: 给已有的数据添加多列,比 ...
随机推荐
- php网站验证码的生成
<?php header("Content-type:text/html;charset=utf-8"); header("Content-type:image/p ...
- sprintf
功能:将数据格式化到字符串中 原型:int sprintf( char *buffer, const char *format, [ argument] … );返回值是这个字符串的长度 上次我企图这 ...
- 初学JDBC,调用存储过程
在JDBC简单封装的基础上实现 public class UserDao{ public static void testGetUser(String userName) throws Excepti ...
- Nginx 服务器性能参数设置
Nginx服务器性能调优 Nginx 配置文件 1.根据CPU内核数设置worker进程个数,以12核CPU为例,设置11个worker进程: worker_processes 11; worker_ ...
- 理解模板引擎Razor 的原理(转载)
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...
- WPF 窗体拖转时不触发MouseLeftButtonUpEvent
解决方案:手动添加Handler,因为e.Handled这个属性是用在路由事件中的,当某个控件得到一个RoutedEvent,就会检测Handled是否为true,为true则忽略该事件. //手动注 ...
- 抓包工具 wireshark
http://fangxin.blog.51cto.com/1125131/735178
- 想在BD自然排名中脱颖而出吗?加张合适的图片吧!
经常在BD或gg搜索不难发现有些搜索结果会带有缩略图,类似下图,图文搭配,看着不累 在一大排搜索结果中,都是文字的话,还没认真看就感觉累,如果在这些搜索结果中突然出现一条图文结合的条目,是不是有耳目一 ...
- zoj.3868.GCD Expectation(数学推导>>容斥原理)
GCD Expectation Time Limit: 4 Seconds Memory Limit: 262144 KB ...
- Radar Installation(贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56826 Accepted: 12 ...