执行Postgres CRUD操作的包

pgcrud的Python项目详细描述


pgcrud公司

利用python列表和dict在postgres数据库上更动态地执行CRUD操作。在

安装

pip install pgcrud

连接

from pgcrud import Connector

conn = Connector(host, dbname, user, password)

创建()

传入表的名称和包含数据库字段名作为键和要设置的值的字典。在

^{pr2}$

标准

updatedelete和{}函数经常与标准一起使用。在

要通过条件,请将所有条件值替换为%s,并按它们在条件中的使用顺序传递一个值列表。这使psycopg2连接器能够确保值是数据库安全的,并根据其类型进行适当的格式设置。在

IN条件应与一个%s一起传入,并在值中包含一个列表项。在

from pgcrud import Connector

conn = Connector(host, dbname, user, password)
fields = ['firstname', 'lastname']
criteria = 'WHERE country = %s AND state in %s'
values = ['United States', ['MA', 'MI', 'NY']]
results = conn.select('contact', fields, criteria, values)

这将形成SQL:

SELECT firstname,
       lastname
    FROM contact
    WHERE country = 'United States'
    AND state in ('MA', 'MI', 'NY')

update()

传入表的名称和包含数据库字段名(作为键)和要设置为要更新的值的字典。在

from pgcrud import Connector

conn = Connector(host, dbname, user, password)
data = {'firstname': 'Fred', 'lastname': 'Jones'}
criteria = 'WHERE id = %s'
values = [12436]
conn.update('contact', data, criteria, values)

删除()

传入表的名称、条件和值,以标识要删除的记录。在

from pgcrud import Connector

conn = Connector(host, dbname, user, password)
criteria = 'WHERE id = %s'
values = [12436]
conn.delete('contact', criteria, values)

选择()

传入表的名称、所需字段名的列表以及用于标识要选择哪些记录的条件和值。在

将返回词典列表。每个条目都将数据库字段名作为键,检索到的值作为值。在

除非性能非常重要,否则这是我建议使用的选择方法。select_list性能最好,但最难使用,因为它要求您在查询中引用字段名的位置,以理解读写代码时引用的值。select_gen是性能第二高的,但需要了解生成器,而不是只使用标准列表。除非结果包含大量的字段和行,否则性能上的差异将可以忽略不计。在

from pgcrud import Connector

conn = Connector(host, dbname, user, password)
fields = ['firstname', 'lastname]
criteria = 'WHERE id = %s'
values = [12436]
results = conn.select('contact', fields, criteria, values)

发电机选择()

这与select_dict语句相同,但它返回一个包含字典的迭代器对象,而不是列表。这提高了将返回的值列表列表转换为以字段名称作为键的dict列表的性能。在

list_select()

将返回一个列表列表,其中的字段值与字段名在字段列表中输入的位置相同。例如,如果id是字段列表中的第一个字段名,那么id值将位于列表中的位置0处。在

commit()

createdelete和{}函数有一个可选的commit参数。有时在数据库中创建或删除记录时,您希望执行全部或无事务。例如,您正在创建一个订单及其所有项目。如果其中一个项目未能创建,则不希望创建订单。在本例中,您将传递commit = False。这意味着在插入完成之前不会提交。在

此参数也包含在select函数中,因为您可能需要某个已创建记录的信息才能创建更多的记录。例如,您插入订单并需要其id以便将其项目与之关联。在本例中,您还需要将commit = False传递给select函数,以便在检索订单id时不会提交order insert。在

from pgcrud import Connector

conn = Connector(host, dbname, user, password)
data = {'total': 1900, 'contact_id': 234422, 'external_id' = 34567}
conn.create('order', data, False)```
order = conn.select('order', ['id'], 'WHERE external_id = %s', [data['external_id]], False)
order_id = order[0]['id']
items = [{'sku': 'CUCUMBER',
          'qty': 1,
          'price': .5},
          {'sku': 'GRAPEFRUIT',
          'qty': 2,
          'price': 1}]
for item in items:
    item['order_id'] = order_id
    conn.create('item', item, False)
conn.commit()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaGCP:一个VM可以位于具有相同地址的不同网络上吗?   java查找安卓中第一个数组的第二个数组中存在的元素的索引   java摄像头活动不工作,设置参数失败   用于python的Base64转换的Java等效代码   为什么JPA/Hibernate在我尝试运行@Query时抛出“java.lang.NegativeArraySizeException:1”?   如何在ubuntu for java的终端上设置路径?   java为什么这两个IP不同?   java JPA:如何将本机查询结果集转换为POJO类集合   java如何在|(12)|(23)中用数字拆分字符串   异常处理如何让程序在达到Java目标后停止运行   java如何不添加以特定字符开头的元素   java如何通过字符串获得swing按钮名称?   java如何在响应不成功时读取改装中的错误体?   java*更新*现在我的程序可以编译但不运行了?