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兔子毒药问题实例分析
Mar 05 Python
Python中几个比较常见的名词解释
Jul 04 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
python3设计模式之简单工厂模式
Oct 17 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
Django 缓存配置Redis使用详解
Jul 23 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
python实现3D地图可视化
Mar 25 Python
python中threading和queue库实现多线程编程
Feb 06 Python
Django如何与Ajax交互
Apr 29 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
apache php模块整合操作指南
2012/11/16 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
建筑专业自我鉴定
2013/10/22 职场文书
实习单位评语
2014/04/26 职场文书
工作求职自荐信
2014/06/13 职场文书
社区工作者个人总结
2015/02/28 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
python处理json数据文件
2022/04/11 Python