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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
windows下ipython的安装与使用详解
Oct 20 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python远程连接MySQL数据库
Apr 19 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
详解Django CAS 解决方案
Oct 30 Python
如何给Python代码进行加密
Jan 10 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
python实现文件分组复制到不同目录的例子
2014/06/04 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Django的models模型的具体使用
2019/07/15 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
python数据归一化及三种方法详解
2019/08/06 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
使用Python构造hive insert语句说明
2020/06/06 Python
python各种excel写入方式的速度对比
2020/11/10 Python
施工安全协议书
2013/12/11 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
感谢信
2019/04/11 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL