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

作者:str999_cn 时间:2022-12-19 15:41:26 

事先在网上搜索了一大圈,头都大了,看到那么多文章写道在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()
标签:Python3,psycopy2
0
投稿

猜你喜欢

  • 用层模拟下拉列表框

    2013-07-01 01:19:00
  • 网页绿色系配色应用实例

    2008-08-26 11:51:00
  • django中forms组件的使用与注意

    2021-03-11 00:14:04
  • python爬虫字体加密的解决

    2021-02-22 12:25:57
  • 在Mysql上创建数据表实例代码

    2024-01-22 17:40:39
  • 玩转markdown 分享几个需要用到的工具

    2023-01-29 22:53:20
  • PHP与MySQL开发中页面乱码的产生与解决

    2023-10-03 04:10:08
  • 六种php加密解密方法实例讲解

    2023-07-01 12:16:02
  • go中new和make的区别小结

    2024-05-09 09:39:48
  • javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)

    2024-04-22 12:49:59
  • vue项目持久化存储数据的实现代码

    2024-04-27 15:59:48
  • Python中map和列表推导效率比较实例分析

    2022-10-11 12:38:41
  • 详解Go中Map类型和Slice类型的传递

    2024-04-23 09:47:03
  • Python全栈之进程和守护进程

    2021-11-25 18:05:44
  • python爬虫库scrapy简单使用实例详解

    2022-03-22 23:46:11
  • Django 实现外键去除自动添加的后缀‘_id’

    2022-11-16 08:06:35
  • Python中函数带括号和不带括号的区别及说明

    2023-01-23 05:23:28
  • Git撤销已经推送(push)至远端仓库的提交(commit)信息操作

    2022-05-31 04:33:28
  • Spring Boot集成MyBatis访问数据库的方法

    2024-01-23 06:45:43
  • 使用python实现微信小程序自动签到功能

    2021-05-30 10:04:11
  • asp之家 网络编程 m.aspxhome.com