百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

一日一技:Python | PostgreSQL中的数据库管理

toyiye 2024-07-15 01:15 6 浏览 0 评论

有几个python模块可以让我们使用PostgreSQL连接和操作数据库:


  1. Psycopg2
  2. pg8000
  3. py-postgresql
  4. PyGreSQL



Psycopg2是PostgreSQL最受欢迎的python驱动程序之一。 它被积极维护并为不同版本的python提供支持。 它还提供对线程的支持,并且可以在多线程应用程序中使用。 由于这些原因,它是开发人员的流行选择。


在这一小节中,我们将通过在python中构建一个简单的数据库管理系统来探索使用psycopg2使用PostgreSQl的功能。


安装模块:

sudo pip3 install psycopg2   #使用的是 Ubuntu系统

注意:如果您使用的是Python2,请使用pip install代替pip3,不过python2.7版本已经不再维护,不推荐使用。

在您的系统中安装了psycopg之后,我们可以连接到数据库并在Python中执行查询。


创建数据库

在我们可以使用python访问数据库之前,我们需要在postgresql中创建数据库。 要创建数据库,请遵循以下步骤:

1.登录PostgreSQL.

sudo -u postgres psql

2.配置密码.

\password

然后将提示您输入密码。 记住这一点,因为我们将使用它来连接到Python中的数据库。

3.创建一个名为“ test”的数据库。 我们将连接到该数据库.

CREATE DATABASE test;   #分号;别忘记带上

配置数据库和密码后,退出psql服务器。

连接到数据库

connect()方法用于建立与数据库的连接。 它包含5个参数:

1.database:您要连接的数据库的名称

2.user:您本地系统的用户名

3.password:登录psql的密码

4.host:主机,默认情况下设置为localhost

5.port:端口号,默认为5432



conn = psycopg2.connect(
            database="test", 
            user = "adith", 
            password = "password", 
            host = "localhost", 
            port = "5432")



建立连接后,我们可以使用python操作数据库。

Cursor对象用于执行sql查询。 我们可以使用连接对象(conn)创建一个游标对象

cur = conn.cursor()  

使用此对象,我们可以更改连接到的数据库



执行完所有查询后,我们需要断开连接。 不断开连接不会导致任何错误,但是通常认为断开连接是一种好习惯。

 conn.close() 

执行查询

execute()方法采用一个参数,即要执行的SQL查询。 SQL查询采用包含SQL语句的字符串形式。

cur.execute("SELECT * FROM emp") 



获得数据

一旦执行了查询,就可以使用fetchall()方法获取查询的结果。 此方法不带参数,并返回选择查询的结果。

 res = cur.fetchall() 

查询结果存储在res变量中.



全部放在一起

在PostgreSQL中创建数据库后,就可以使用python访问该数据库。 我们首先使用以下模式在数据库中创建一个名为test的emp表:(id INTEGER PRIMARY KEY,名称VARCHAR(10),salary INT,dept INT)。 创建表后,没有任何错误,我们将值插入表中。

插入值后,我们可以查询表以选择所有行,并使用fetchall()函数将其显示给用户。



# importing libraries 
import psycopg2 

# a function to connect to 
# the database. 
def connect(): 

	# connecting to the database called test 
	# using the connect function 
	try: 

		conn = psycopg2.connect(database ="test", 
							user = "adith", 
							password = "password", 
							host = "localhost", 
							port = "5432") 

		# creating the cursor object 
		cur = conn.cursor() 
	
	except (Exception, psycopg2.DatabaseError) as error: 
		
		print ("Error while creating PostgreSQL table", error) 
	

	# returing the conn and cur 
	# objects to be used later 
	return conn, cur 


# a function to create the 
# emp table. 
def create_table(): 

	# connect to the database. 
	conn, cur = connect() 

	try: 
		# the test database contains a table called emp 
		# the schema : (id INTEGER PRIMARY KEY, 
		# name VARCHAR(10), salary INT, dept INT) 
		# create the emp table 

		cur.execute('CREATE TABLE emp (id INT PRIMARY KEY, name VARCHAR(10), 
									salary INT, dept INT)') 

		# the commit function permanently 
		# saves the changes made to the database 
		# the rollback() function can be used if 
		# there are any undesirable changes and 
		# it simply undoes the changes of the 
		# previous query 
	
	except: 

		print('error') 

	conn.commit() 


# a function to insert data 
# into the emp table 
def insert_data(id = 1, name = '', salary = 1000, dept = 1): 

	conn, cur = connect() 

	try: 
		# inserting values into the emp table 
		cur.execute('INSERT INTO emp VALUES(%s, %s, %s, %s)', 
									(id, name, salary, dept)) 
	
	except Exception as e: 

		print('error', e) 
	# commiting the transaction. 
	conn.commit() 


# a function to fetch the data 
# from the table 
def fetch_data(): 

	conn, cur = connect() 

	# select all the rows from emp 
	try: 
		cur.execute('SELECT * FROM emp') 
	
	except: 
		print('error !') 

	# store the result in data 
	data = cur.fetchall() 

	# return the result 
	return data 

# a function to print the data 
def print_data(data): 

	print('Query result: ') 
	print() 

	# iterating over all the 
	# rows in the table 
	for row in data: 

		# printing the columns 
		print('id: ', row[0]) 
		print('name: ', row[1]) 
		print('salary: ', row[2]) 
		print('dept: ', row[3]) 
		print('----------------------------------') 

# function to delete the table 
def delete_table(): 

	conn, cur = connect() 

	# delete the table 
	try: 

		cur.execute('DROP TABLE emp') 

	except Exception as e: 
		print('error', e) 

	conn.commit() 


# driver function 
if __name__ == '__main__': 

	# create the table 

	create_table() 

	# inserting some values 
	insert_data(1, 'adith', 1000, 2) 
	insert_data(2, 'tyrion', 100000, 2) 
	insert_data(3, 'jon', 100, 3) 
	insert_data(4, 'daenerys', 10000, 4) 

	# getting all the rows 
	data = fetch_data() 

	# printing the rows 
	print_data(data) 

	# deleting the table 
	# once we are done with 
	# the program 
	delete_table() 

输出:

相关推荐

Python第三课3. Python 的非正式介绍

3.Python的非正式介绍?在下面的例子中,通过提示符(>>>与...)的出现与否来区分输入和输出:如果你想复现这些例子,当提示符出现后,你必须在提示符后键入例子中的每...

如何使用 Python 构建一个“谷歌搜索”系统?| 内附代码

来源|hackernoon编译|武明利,责编|Carol出品|AI科技大本营(ID:rgznai100)在这篇文章中,我将向您展示如何使用Python构建自己的答案查找系统。基本上,这...

Python 模拟微博登陆,亲测有效!(如何用python爬微博)

今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!模拟登陆……代码是参考了:https://www.douban.com/note/201767245/,我对代码进...

Python 驱动的 AI 艺术批量创作: 免费的Bing 绘图代码解析

这篇文章将深入分析一段Python代码,该代码利用Bing的AI绘图功能,即bing的images/create,根据用户提供的文本提示生成图像。我们将详细探讨其工作原理、代码结构、...

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

取消回复欢迎 发表评论:

请填写验证码