官方资料:http://www.psycopg.org/psycopg/docs/
安装:
如果以上2个方法安装失败,可下载源码安装包:
- wget http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz
- tar xf psycopg2-2.6.tar.gz
- cd psycopg2-2.6
- yum install -y postgresql-devel*
- python setup.py build
- sudo python setup.py install
- 使用:
- 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
- @route('/addkeyword',method='POST')
- def addkeyword():
- s = request.environ.get('beaker.session')
- if s.get('user',None) == None:
- return redirect('/login')
- keyword = request.forms.get('keyword').strip()
- keycode = request.forms.get('keycode').strip()
- notes = request.forms.get('notes').strip()
- parentid = request.forms.get('site').strip()
- sortid = 1
- admin_id = s.get('userid','末知')
- admin_name = s.get('user','末知')
- if not keyword or not keycode or not notes or not parentid or not sortid:
- return '-2'
- sql = "insert into searchcode(code,code_name,notes,parentid,sortid,admin_id,admin_name) values(%s,%s,%s,%s,%s,%s,%s)"
- data = (keycode,keyword,notes,int(parentid),int(sortid),int(admin_id),admin_name,)
- status = writeDb(sql,data)
- if status:
- return '0'
- else:
- return '-1'
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏