Python3安装psycopy2以及遇到问题解决方法


Posted in Python onJuly 03, 2019

事先在网上搜索了一大圈,头都大了,看到那么多文章写道在python里安装psycopg2的各种坑和各种麻烦,各种不成功。搜索了一下午,索性外出放松。晚饭后,又继续上psycopg2官网(http://initd.org/psycopg/docs/install.html)看了一些有关install的资料,感觉还是麻烦。最后上这个网(https://pypi.python.org/pypi/psycopg2/)上,准备用wheel的方式进行安装。

不过在此网页上突然瞟到一句:

Python3安装psycopy2以及遇到问题解决方法

翻译过来就是:“如果你的pip版本支持wheel包,那么可以仅仅允许pip命令即可安装一个二进制的Psycopg版本,包括所有依赖项”。心中窃喜。

但是我windows7里安装的python一直没有设置环境变量,一直用的Anaconda下面的一个spyder图形编程界面,所以在命令行下还不能直接使用python。现在首先在环境变量的path里添加“C:\Users\Tom\Anaconda3”,这个是Anaconda3在电脑里的安装目录(因为我的python是通过Anaconda安装的)。之后在命令行运行pip,发现还是不行,查看后发现pip位于Anaconda文件夹下面的Scripts文件夹下。所以还要添加“C:\Users\Tom\Anaconda3\Scripts”到环境变量,之后就可以在命令行里运行pip命令了。

Python3安装psycopy2以及遇到问题解决方法

Python3安装psycopy2以及遇到问题解决方法

Python3安装psycopy2以及遇到问题解决方法

Python3安装psycopy2以及遇到问题解决方法

至此,psycopg2成功安装。

再来看spyder中python程序操作PostgreSQL数据库的代码和运行结果:

Python3安装psycopy2以及遇到问题解决方法

        上述python代码连接到articles数据库,在其中创建了一个叫做Urls的数据表,该表有2个字段,第一个是字段ID,第二个是字段URL。我们打开pgAdmin4,在其中,发现articles数据库里已经出现了Urls数据表,且包含刚刚创建的2个字段。见下表:

Python3安装psycopy2以及遇到问题解决方法

 

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

如果不采用Anaconda的安装包,而直接使用的Python.org官网上的安装包,安装完成后是没有pip.exe文件的。需要在python窗口另外执行以下命令,然后在Scripts文件夹下即能看到刚刚生产的几个pip文件。

Python3安装psycopy2以及遇到问题解决方法

Python3安装psycopy2以及遇到问题解决方法

 Python3安装psycopy2以及遇到问题解决方法

注意,pip3文件不是最新版本,直接下载会出错,需要对pip首先进行更新。但更新的过程中可能会出错,连续多尝试几次,最后应该会成功。

更新之后,即可按照原先的方法进行下载了。

内容扩展:

Python——使用psycopy2操作PostgreSQL

Psycopg2与其他实现了DB API 2.0协议的其他数据库用户基本一致。当执行包含特殊字符的SQL语句的时候,传递数据用来填充查询占位符, 让Psycopg执行正确的转换(不再有SQL注入)

# encoding: utf-8
__author__ = 'chenlong'
 
import psycopg2
from config import ConfigServer
 
class PGSQLdb:
  def __init__(self):
    self.tryconnect()
 
  def tryconnect(self):
    # 连接到数据库
    self.con=psycopg2.connect(database = ConfigServer['pg_db'],
           user = ConfigServer['pg_user'],
           password = ConfigServer['pg_pass'],
              host= ConfigServer['pg_host'],
              port = ConfigServer['pg_port'])
 
    # 打开一个光标,用来执行数据库操作
    self.cur=self.con.cursor()
 
  def tryexecute(self,sqlstr):
    # 执行命令
    self.cur.execute(sqlstr)
    # 使改变永久存入数据库
    self.con.commit()
 
 
  def tryexecute2(self,sqlstr,data):
      # 传递数据用来填充查询占位符, 让Psycopg执行正确的转换(不再有SQL注入)
      # 第一个参数:包含占位符的SQL语句,如:"INSERT INTO test (num, data) VALUES (%s, %s)"
      # 第二个参数:与占位符对应的值,如: (100, "abc'def")
      self.cur.execute(sqlstr,data)
      self.con.commit()
 
  def tryclose(self):
    # 关闭光标
    self.cur.close()
    # 关闭连接
    self.con.close()
Python 相关文章推荐
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
在Python下利用OpenCV来旋转图像的教程
Apr 16 Python
Python中list初始化方法示例
Sep 18 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python csv模块使用方法代码实例
Aug 29 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
Python 如何实现数据库表结构同步
Sep 29 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
python调试神器PySnooper的使用
Jul 03 #Python
详解DeBug Python神级工具PySnooper
Jul 03 #Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 #Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 #Python
在cmd中查看python的安装路径方法
Jul 03 #Python
python动态进度条的实现代码
Jul 03 #Python
OpenCV 轮廓检测的实现方法
Jul 03 #Python
You might like
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP读取Excel类文件
2017/05/15 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
浅谈js的异步执行
2016/10/18 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
使用numba对Python运算加速的方法
2018/10/15 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
《逃家小兔》教学反思
2014/02/23 职场文书
关于远足的感想
2015/08/10 职场文书
小学语文教学随笔
2015/08/14 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫