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+opencv识别图片中的圆形
Mar 25 Python
高效使用Python字典的清单
Apr 04 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Django中的静态文件管理过程解析
Aug 01 Python
python打开使用的方法
Sep 30 Python
python实现超市商品销售管理系统
Nov 22 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
在python image 中实现安装中文字体
May 16 Python
python和php哪个更适合写爬虫
Jun 22 Python
详解python中的闭包
Sep 07 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
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
使用Python从零开始撸一个区块链
2018/03/14 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
护士实习鉴定范文
2013/12/22 职场文书
员工考核管理制度
2014/02/02 职场文书
明确岗位职责
2015/02/14 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python