Metadata-Version: 2.1
Name: sqlx-exec
Version: 2.2.7
Summary: A thread safe sql executor for Python with connection pool. It helps you automatically manage connections and transactions.
Home-page: https://gitee.com/summry/sql-exec
Author: summy
Author-email: xiazhongbiao@126.com
License: UNKNOWN
Description: Usage Sample
        ''''''''''''
        
        .. code:: python
        
           import sqlexec
        
           if __name__ == '__main__':
               sqlexec.init_db('test.db', driver='sqlite3', show_sql=True, debug=True)
        
               # or
               sqlexec.init_db("postgres://user:password@127.0.0.1:5432/testdb", driver='psycopg2', pool_size=5, show_sql=True, debug=True)
        
               # or
               sqlexec.init_db(host='127.0.0.1', port='5432', user='xxx', password='xxx', database='testdb', show_sql=True, driver='psycopg2')
        
               effected_rowcount = sqlexec.insert(table='person', name='zhangsan', age=15)
        
               # if driver is 'pymysql' or 'mysql.connector' of MySQL, the select_key is 'SELECT LAST_INSERT_ID()'
               select_key = "SELECT currval('person_id_seq')"
        
               id = sqlexec.save(select_key=select_key, table='person', name='lisi', age=26)
        
               id = sqlexec.save_sql(select_key, 'INSERT INTO person(name, age) VALUES(?,?)', 'wangwu', 38)
        
               id = sqlexec.save_sql(select_key, 'INSERT INTO person(name, age) VALUES(:name, :age)', name='zhaoliu', age=45)
        
               count = sqlexec.get('select count(1) from person')
               # result: 4
        
               count = sqlexec.sql('select count(1) from person').get()
               # result: 4
        
               persons = sqlexec.select('select id, name, age from person')
               # result:
               # (3, 'zhangsan', 15)
               # (4, 'lisi', 26)
               # (5, 'wangwu', 38)
               # (6, 'zhaoliu', 45)
        
               persons = sqlexec.sql('select id, name, age from person').select()
               # result:
               # (3, 'zhangsan', 15)
               # (4, 'lisi', 26)
               # (5, 'wangwu', 38)
               # (6, 'zhaoliu', 45)
        
               persons = sqlexec.table('person').select('id', 'name', 'age')
               # result:
               # (3, 'zhangsan', 15)
               # (4, 'lisi', 26)
               # (5, 'wangwu', 38)
               # (6, 'zhaoliu', 45)
        
               persons = sqlexec.select_one('select id, name, age from person where name = ?', 'zhangsan')
               # result:
               # (3, 'zhangsan', 15)
        
               persons = sqlexec.sql('select id, name, age from person where name = ?').select_one('zhangsan')
               # result:
               # (3, 'zhangsan', 15)
        
               persons = sqlexec.select('select id, name, age from person where name = :name', name='zhangsan')
               # result:
               # [(3, 'zhangsan', 15)]
        
               persons = sqlexec.sql('select id, name, age from person where name = :name').select(name='zhangsan')
               # result:
               # [(3, 'zhangsan', 15)]
        
               persons = sqlexec.sql('select id, name, age from person where name = :name').param(name='zhangsan').select()
               # result:
               # [(3, 'zhangsan', 15)]
        
               persons = sqlexec.table('person').where(name__eq='zhangsan').select('id', 'name', 'age')
               # result:
               # [(3, 'zhangsan', 15)]
        
               persons = sqlexec.query('select id, name, age from person')
               # result:
               # {'id': 3, 'name': 'zhangsan', 'age': 15}
               # {'id': 4, 'name': 'lisi', 'age': 26}
               # {'id': 5, 'name': 'wangwu', 'age': 38}
               # {'id': 6, 'name': 'zhaoliu', 'age': 45}
        
               persons = sqlexec.sql('select id, name, age from person').query()
               # result:
               # {'id': 3, 'name': 'zhangsan', 'age': 15}
               # {'id': 4, 'name': 'lisi', 'age': 26}
               # {'id': 5, 'name': 'wangwu', 'age': 38}
               # {'id': 6, 'name': 'zhaoliu', 'age': 45}
        
               persons = sqlexec.query_one('select id, name, age from person where name = ?', 'zhangsan')
               # result:
               # {'id': 3, 'name': 'zhangsan', 'age': 15}
        
               persons = sqlexec.sql('select id, name, age from person where name = ?').query_one('zhangsan')
               # result:
               # {'id': 3, 'name': 'zhangsan', 'age': 15}
        
               persons = sqlexec.query('select id, name, age from person where name = :name', name='zhangsan')
               # result:
               # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
        
               persons = sqlexec.sql('select id, name, age from person where name = :name').query(name='zhangsan')
               # result:
               # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
        
               persons = sqlexec.sql('select id, name, age from person where name = :name').param(name='zhangsan').query()
               # result:
               # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
        
               persons = sqlexec.table('person').columns('id', 'name', 'age').where(name='zhangsan').query()
               # result:
               # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
        
               effected_rowcount = sqlexec.table('person').where(name='zhangsan').update(name='xxx', age=45)
        
               effected_rowcount = sqlexec.table('person').where(id=6).delete()
               count = sqlexec.table('person').count())
               # result: 3
        
               effected_rowcount = sqlexec.execute('delete from person where id = :id', id=5)
               count = sqlexec.get('select count(1) from person')
               # result: 2
        
               effected_rowcount = sqlexec.sql('delete from person where id = ?').execute(4)
               count = sqlexec.sql('select count(1) from person').get()
               # result: 1
        
               effected_rowcount = sqlexec.sql('delete from person where id = :id').execute(id=3)
               count = sqlexec.sql('select count(1) from person').get()
               # result: 0
        
               # select data save as csv
               sqlexec.sql('select name, age from person WHERE name = ?').load('张三').to_csv('test.csv')
        
               sqlexec.sql('select name, age from person WHERE name = ?').param('张三').to_csv('test.csv')
        
               # insert from csv
               sqlexec.table('person').insert_from_csv('test.csv')
        
               # select data transform to DataFrame of pandas
               df = sqlexec.sql('select name, age from person WHERE name = :name').load(name='张三').to_df()
        
               df = sqlexec.sql('select name, age from person WHERE name = :name').param(name='张三').to_df()
        
               # insert from DataFrame of pandas
               sqlexec.table('person').insert_from_df(dataframe)
        
               # select data save as json
               sqlexec.sql('select name, age from person WHERE name = ?').load('张三').to_json('test.json')
        
               sqlexec.sql('select name, age from person WHERE name = ?').param('张三').to_json('test.json')
        
               # insert from json
               sqlexec.table('person').insert_from_json('test.json')
        
               sqlexec.close()
        
        Transaction
        '''''''''''
        
        .. code:: python
        
           from sqlexec import with_transaction, transaction
        
           @with_transaction
           def test_transaction():
               insert_func(....)
               update_func(....)
        
        
           def test_transaction2():
               with transaction():
                   insert_func(....)
                   update_func(....)
        
        
        If you want to operate MySQL database like Mybatis, may be you need MySqlx: https://pypi.org/project/mysqlx
        
        If you want to operate PostgreSQL database like Mybatis, may be you need PgSqlx: https://pypi.org/project/pgsqlx
        
        If you want to execute SQL like Mybatis, may be you need sqlx-batis: https://pypi.org/project/sqlx-batis
        
Keywords: SQL,MySQL,PostgreSQL,SQLite,Oracle,SQL Server,Database,Python,RDB
Platform: UNKNOWN
Requires-Python: >=3.5
Description-Content-Type: text/markdown
