首页 > 其他分享 >pg库psycopg2

pg库psycopg2

时间:2024-09-05 22:52:21浏览次数:9  
标签:psycopg2 self cursor connection pg table query

import psycopg2

class PostgreSQLDB:
    def __init__(self, host, port, user, password, database):
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.database = database
        self.connection = None

    def connect(self):
        try:
            self.connection = psycopg2.connect(
                host=self.host,
                port=self.port,
                user=self.user,
                password=self.password,
                database=self.database
            )
            return True
        except psycopg2.Error as err:
            print(f"Error connecting to PostgreSQL: {err}")
            return False

    def close(self):
        if self.connection:
            self.connection.close()

    def insert_batch(self, table, columns, data_list):
        placeholders = ', '.join(['%s'] * len(columns))
        column_names = ', '.join(columns)
        query = f"INSERT INTO {table} ({column_names}) VALUES ({placeholders})"
        cursor = self.connection.cursor()
        try:
            psycopg2.extras.execute_batch(cursor, query, data_list)
            self.connection.commit()
            return True
        except psycopg2.Error as err:
            self.connection.rollback()
            print(f"Error inserting batch data: {err}")
            return False
        finally:
            cursor.close()

    def update(self, table, set_values, condition):
        set_statements = ', '.join([f"{key} = %s" for key in set_values])
        query = f"UPDATE {table} SET {set_statements} WHERE {condition}"
        cursor = self.connection.cursor()
        try:
            cursor.execute(query, tuple(set_values.values()))
            self.connection.commit()
            return True
        except psycopg2.Error as err:
            self.connection.rollback()
            print(f"Error updating data: {err}")
            return False
        finally:
            cursor.close()

    def delete(self, table, condition):
        query = f"DELETE FROM {table} WHERE {condition}"
        cursor = self.connection.cursor()
        try:
            cursor.execute(query)
            self.connection.commit()
            return True
        except psycopg2.Error as err:
            self.connection.rollback()
            print(f"Error deleting data: {err}")
            return False
        finally:
            cursor.close()

    def query(self, query):
        cursor = self.connection.cursor()
        try:
            cursor.execute(query)
            results = cursor.fetchall()
            return results
        except psycopg2.Error as err:
            print(f"Error querying data: {err}")
            return None
        finally:
            cursor.close()

db = PostgreSQLDB('localhost', 5432, 'your_user', 'your_password', 'your_database')

if db.connect():
    # 批量插入数据
    columns = ['name', 'age']
    data_list = [('John', 25), ('Alice', 30)]
    if db.insert_batch('your_table', columns, data_list):
        print("Batch data inserted successfully")

    # 更新数据
    set_values = {'age': 35}
    condition = "name = 'John'"
    if db.update('your_table', set_values, condition):
        print("Data updated successfully")

    # 删除数据
    condition = "age < 18"
    if db.delete('your_table', condition):
        print("Data deleted successfully")

    # 查询数据
    query = "SELECT * FROM your_table"
    results = db.query(query)
    if results:
        for row in results:
            print(row)

    db.close()

 

标签:psycopg2,self,cursor,connection,pg,table,query
From: https://www.cnblogs.com/tanaikang/p/18399362

相关文章

  • FPGA初试
    最开始是看到了图灵完备这个游戏然后是数字电路模拟器,试着用Ripes写一个简单的RSICV汇编点灯玩再后萌生了自己做个RSICV的CPU玩玩,但手动搭建逻辑门电路我是没时间,但可以用FPGA学着写一个软核,顺带可以在上面跑个RTOS试试,于是买了Tangnano20k第一天跑跑例程,改下流水灯用按钮操作,......
  • pgsql计算加减乘除:深入探索PostgreSQL中的数学运算
    pgsql计算加减乘除:深入探索PostgreSQL中的数学运算在数据库管理系统中,进行基本的数学运算是非常常见的需求。PostgreSQL(简称pgsql),作为一个功能强大的开源对象-关系数据库系统,提供了丰富的数学函数和操作符来支持加减乘除等基本运算。本文将深入探讨如何在PostgreSQL中执行这些运算......
  • 基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
    1.算法运行效果图预览(完整程序运行后无水印)   将FPGA仿真结果导入到matlab显示结果: 测试样本1   测试样本2   测试样本3   2.算法运行软件版本vivado2019.2 matlab2022a 3.部分核心程序(完整版代码包含注释和操作步骤视频) `time......
  • 基于 FPGA 的 SD 卡的数据读写实现(SD NAND FLASH)
    1、存储芯片分类目前市面上的存储芯片,大致可以将其分为3大类:①EEPROMEEPROM(ElectricallyErasableProgrammablereadonlymemory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。这类产品容量小,读......
  • FPGA
    什么是FPGAFiledprogrammablegatearray现场可编程门朕列可编程逻辑整列*PLD*(ProgrammableLogicDevice)PLD在上世纪70年代由专用集成电路(ASIC)发展而来,可由软件编程的方式进行反复的擦写PLD发展历程简史上世纪70年代初期出现了PROMEPROM和EEPROM在70年代中期又出......
  • MinimumLongestTripG
    https://www.luogu.com.cn/problem/P9981首先显而易见的是第一问的答案用拓扑排序,然后用它的倒序进行DP。我们考虑第二问。首先要保证第一问的情况下才能考虑第二问,于是我们对于所有点按照第一问的答案分层,先按照新加入的边考虑,再按照上一层点的排名考虑,做完这一层后直接对这一......
  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果       本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。 vivado2019.2仿真结果如下(完整代码运行后无水印): SNR=15DB   SNR=10DB   SNR=5DB   SNR=1DB ......
  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。vivado2019.2仿真结果如下(完整代码运行后无水印):SNR=15DBSNR=10DBSNR=5DBSNR=1DB系统RTL结构图:2.算法涉及理论知识概要QPSK是一种数......
  • DWS(PG)自定义函数查询表注释 ,表结构
    createorreplacefunctionshow_table(tableNamevarchar2)returnstable(table_namevarchar2,column_namevarchar2,column_typevarchar2,attnotnullvarchar2,column_commentvarchar2)as$$begin returnquerySELECTc.relname::varchar2astable_name,......
  • 正点原子FPGA新品ZYNQ7035/7045/7100开发板,ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2!
    正点原子FPGA新品ZYNQ7035/7045/7100开发板,ZYNQ7000系列、双核ARM、PCIe2.0、SFPX2!正点原子Z100ZYNQ开发板,搭载XilinxZynq7000系列芯片,核心板支持XilinxZynq-7035、Zynq-7045和Zynq-7100三种型号。开发板由核心板+底板组成,外设资源丰富,板载2路千兆以太网接口(PS+PL)、PCIe2.0x8、......