Skip to main content

Sql Tool (PostgreSQL version)

Project description

PostgreSQL 版本的 sqltool。本项目由 007gzs/sqltool (基于 pymysql) 改写而来, 全部适配为 PostgreSQL 语法, 底层使用 psycopg2

作者: 0716gzs (https://github.com/0716gzs) 项目地址: https://github.com/0716gzs/psql_sqltool

特性

  • PostgreSQL 连接池 (fork 安全, 自动归还连接)

  • 链式 SQL 生成器: INSERT / SELECT / UPDATE / DELETE

  • 批量 SQL 生成, 适合把数据落盘成导入脚本

  • ON CONFLICT ... DO UPDATE (对应 MySQL 的 ON DUPLICATE KEY UPDATE)

  • 自增主键 / 唯一冲突的内存去重

安装

pip install psycopg2-binary
python setup.py install

快速上手

from sqltool.postgres_client import PostgresClient

client = PostgresClient(
    host='127.0.0.1',
    port=5432,
    user='postgres',
    password='postgres',
    dbname='demo',
)

# 查询
rows = client.select(table_name='user', wheres={'id': 1})

# 插入 (参数化)
client.insert(
    [{'id': 1, 'name': 'alice'}, {'id': 2, 'name': 'bob'}],
    table_name='user',
    field_list=('id', 'name'),
)

# 插入并冲突更新 (upsert)
client.insert(
    [{'id': 1, 'name': 'alice2'}],
    table_name='user',
    field_list=('id', 'name'),
    on_conflict_fields=('id',),
    on_duplicate_key_update_fields=('name',),
)

# 更新 / 删除
client.update(table_name='user', update_columns={'name': 'alice'}, wheres={'id': 1})
client.delete(table_name='user', wheres={'id': 1})

批量生成 SQL (导出脚本)

from sqltool.sql_gen import GenSqlAutoId

class GenUser(GenSqlAutoId):
    TABLE_NAME = 'user'
    FIELD_LIST = ('id', 'name')

gen = GenUser()
gen.add_item(name='alice')
gen.add_item(name='bob')
for sql in gen.gen_sql():
    print(sql)

与原 MySQL 版的主要差异

  • 标识符引用: 反引号 ` -> 双引号 "

  • ON DUPLICATE KEY UPDATE ... AS __new_data__ -> ON CONFLICT (...) DO UPDATE SET ... EXCLUDED..., 且 PostgreSQL 必须显式指定冲突目标 on_conflict_fields

  • 分页: LIMIT start, size -> LIMIT size OFFSET start

  • INFORMATION_SCHEMA ... AUTO_INCREMENT -> 通过 pg_get_serial_sequence 读取序列

  • 底层驱动: pymysql -> psycopg2

License

BSD-3-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

psql_sqltool-0.1.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

psql_sqltool-0.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file psql_sqltool-0.1.0.tar.gz.

File metadata

  • Download URL: psql_sqltool-0.1.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for psql_sqltool-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3178b85ce18c8bacce76fab61a1dd0a380fb4ff2efd143c67b81472abf503d78
MD5 ca424b6401e63c6f492544586de781c6
BLAKE2b-256 aa29df9435cfbfdf7ae9c62804c267e61a32b056f79a041e1759224fae253dd9

See more details on using hashes here.

File details

Details for the file psql_sqltool-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: psql_sqltool-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for psql_sqltool-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7279be62710ab9cee01251d97e18e38074c561fd6c49001017fae5f0ca9e3e94
MD5 2e4ad22df6049d77349f552c05d52700
BLAKE2b-256 0962557673d70e4ed64be49eab82bb148cb32510b497f8bc81c006906c3e2556

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page