博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2
阅读量:4984 次
发布时间:2019-06-12

本文共 3772 字,大约阅读时间需要 12 分钟。

ubuntu上跑python连接pg,报错  ImportError: No module named psycopg2
root@pgproxy1:~# python /home/zxw/PGWriterTest_m.py 
Traceback (most recent call last):
  File "/home/zxw/PGWriterTest_m.py", line 4, in <module>
    import psycopg2
ImportError: No module named psycopg2
例如以下安装:
1
root@pgproxy1:~# apt-cache search psycopg2
python-psycopg2 - Python module for PostgreSQL
python-psycopg2-dbg - Python module for PostgreSQL (debug extension)
python-psycopg2-doc - Python module for PostgreSQL (documentation package)
python3-psycopg2 - Python 3 module for PostgreSQL
python3-psycopg2-dbg - Python 3 module for PostgreSQL (debug extension)
2
root@pgproxy1:~# python -V
Python 2.7.3
3
root@pgproxy1:~# apt-get install -y python-psycopg2 python-psycopg2-doc python-psycopg2-dbg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@pgproxy1:~#
4
脚本例如以下:
# --encoding:utf-8--
import time
import threading
import psycopg2
import Queue
import datetime

该接口相关能够參考其官网:

http://initd.org/psycopg/

class PGWriterTest(threading.Thread):
    """ 初始化 """
    def __init__(self,connstr):
        self.conn = psycopg2.connect(connstr)
        self.cursor = self.conn.cursor()
        
        self.dbnum  = 4
        self.connArray = []
        self.cursorArray = []
        
        
        for i in range(0,self.dbnum):
            #DB port
            dbidstr = '%02d' % (9900 + i)
            if (i == 0  or i == 2 ):
                dstDB = 'host=ip1 user=dbusername password=pwd dbname=dbname port='+ dbidstr
            else:
                dstDB = 'host=ip2 user=dbusername password=pwd dbname=dbname port='+ dbidstr
            print 'connect ' + dstDB
           
            dstConn =  psycopg2.connect(dstDB)
            self.connArray.append(dstConn)
            dstCursor = dstConn.cursor()
            self.cursorArray.append(dstCursor)
        
        # 执行父类的构造函数
        threading.Thread.__init__(self)
    """ 数据写入数据库 """ 
    def read(self,t_id):
        sql = 'SELECT * from get_cont('+str(t_id)+')' 
        self.cursor.execute(sql)
        datalist = []
        for row in self.cursor.fetchall():
            datalist.append(row)
        return datalist    
    
    """ 数据写入数据库 """ 
    def save(self,t_id,data):
        sql = 'SELECT write_cont((%s,character(255) %s,%d,NOW()::timestamp))'
        params = []
        params.append(t_id)
        params.append(data[1])
        params.append(data[2])
        params.append(data[3])
        #print params
        #取db_ins_id
        db_ins_id = 0
        db_ins_id = t_id % self.dbnum
        try:
            print str(datetime.datetime.now()) + " DB " + str(db_ins_id) + " " +  str( t_id ) + " before insert"
            insert_sql = 'SELECT write_cont((%s,character(255) %s,%d,NOW()::timestamp))'
            self.cursorArray[db_ins_id].execute(insert_sql,params)
            self.cursorArray[db_ins_id].execute("COMMIT")
            print str(datetime.datetime.now()) + " DB " + str(db_ins_id) + " " +  str( t_id ) + " inserted"
            return True
        except Exception,ex:
            print("save error:%s" % str(ex))
            print("save t_id:%s\t" % str(t_id))
            print("error cont:%s" % str(params))
            #self.log.write("error param:%s" % str(params))
            #self.log.write("error t_id:%s" % data.get('t_id',''))
            self.cursorArray[db_ins_id].execute("ROLLBACK")
            return False
            
            #測试读取
            """
            try:
                searchsql = 'select t_id from get_cont('+ str(t_id) + ')'
                self.cursorArray[db_ins_id].execute(searchsql)
                data = self.cursorArray[db_ins_id].fetchone()
                if (data == None  or int(data[0]) != t_id ):
                    print ' insert error for ' +str(db_ins_id) + searchsql
            except Exception,searchex:
                print str(searchex) + ' for  ' + searchsql
            """     
        return True
if __name__ == "__main__":
    pgTest = PGWriterTest('host=ip user=DBUser password=pwd dbname=DBNAme port=9999')
    start_time =  str(datetime.datetime.now())
    for i in range(1,10):
        t_id = 1000 + i;
        print str(datetime.datetime.now()) + " getting "
        rows = pgTest.read(t_id)
        
        print str(datetime.datetime.now()) + " gotten "
        #print rows[0]
        pgTest.save(t_id,rows[0])
    print start_time

    print  str(datetime.datetime.now())

----------------- 

转载请著明出处:

blog.csdn.net/beiigang

转载于:https://www.cnblogs.com/gcczhongduan/p/5244177.html

你可能感兴趣的文章
三大特征 封装 继承 多态
查看>>
Python 3 函数分类
查看>>
通过.frm表结构和.ibd文件恢复数据
查看>>
R语言之——字符串处理函数
查看>>
架构师速成5.1-小学gtd进阶
查看>>
Spring-aop(一)
查看>>
ucos在xp平台下开发环境搭建
查看>>
python基础入门while循环 格式化 编码初识
查看>>
cmake方式使用vlfeat
查看>>
windows下用纯C实现一个简陋的imshow:基于GDI
查看>>
struts2 自定义类型转换器
查看>>
cocos2d-x xna在有vs2012和vs2010的情况下的环境部署
查看>>
43-安装 Docker Machine
查看>>
c++学习(三):表达式和语句
查看>>
laravel框架基础知识总结
查看>>
nginx: 响应体太大
查看>>
字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略
查看>>
单例模式
查看>>
Robotium源码分析之Instrumentation进阶
查看>>
Android 交错 GridView
查看>>