执行Postgres CRUD操作的包
pgcrud的Python项目详细描述
pgcrud公司
利用python列表和dict在postgres数据库上更动态地执行CRUD操作。在
安装
pip install pgcrud
连接
from pgcrud import Connector
conn = Connector(host, dbname, user, password)
创建()
传入表的名称和包含数据库字段名作为键和要设置的值的字典。在
^{pr2}$标准
update
、delete
和{
要通过条件,请将所有条件值替换为%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()
create
、delete
和{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()
- 项目
标签: