MySQLX 2.2.5__tar.gz → 2.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mysqlx
3
- Version: 2.2.5
4
- Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions. It also provides ORM operations for single tables.
3
+ Version: 2.2.6
4
+ Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions.
5
5
  Home-page: https://gitee.com/summry/mysqlx
6
6
  Author: summy
7
7
  Author-email: xiazhongbiao@126.com
@@ -115,7 +115,24 @@ Usage Sample
115
115
  # (3, 'zhangsan', 15)
116
116
 
117
117
  # you can direct execute sql with db
118
- effected_rowcount = db.insert(table='user', name='zhaoliu', age=66)
118
+ effected_rowcount = db.table('person').insert(name='zhangsan', age=15)
119
+ # 1
120
+
121
+ primary_key = db.table('person').save(name='lisi', age=26)
122
+ # 4
123
+
124
+ effected_rowcount = db.insert(table='user', name='wangwu', age=38)
125
+ # 1
126
+
127
+ users = db.table('user').columns('id, name, age').select()
128
+ # result:
129
+ # (3, 'zhangsan', 15)
130
+ # (4, 'lisi', 26)
131
+ # (5, 'wangwu', 38)
132
+
133
+ users = db.table('user').columns('id, name, age').where(name='zhangsan').query()
134
+ # result:
135
+ # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
119
136
 
120
137
  users = db.select('select id, name, age from user')
121
138
  # result:
@@ -149,12 +166,12 @@ Transaction
149
166
  insert_func(....)
150
167
  update_func(....)
151
168
 
152
- You can generate model class with mysqlx-generator: https://pypi.org/project/sqlormx
169
+ If you want to use ORM, may be you need SQLORMX: https://pypi.org/project/sqlormx
153
170
 
154
171
  If you want to operate PostgreSQL database, may be you need PgSqlx: https://pypi.org/project/pgsqlx
155
172
 
156
- If you just wanted a simple sql executor, may be you need sqlx-exec: https://pypi.org/project/sqlexecx
173
+ If you just wanted a simple sql executor, may be you need SQLExecX: https://pypi.org/project/sqlexecx
157
174
 
158
- If you wanted simultaneously support MySQL and PostgreSQL, may be you need sqlx-batis: https://pypi.org/project/batisx
175
+ If you wanted simultaneously support MySQL and PostgreSQL, may be you need BatisX: https://pypi.org/project/batisx
159
176
 
160
177
 
@@ -101,7 +101,24 @@ Usage Sample
101
101
  # (3, 'zhangsan', 15)
102
102
 
103
103
  # you can direct execute sql with db
104
- effected_rowcount = db.insert(table='user', name='zhaoliu', age=66)
104
+ effected_rowcount = db.table('person').insert(name='zhangsan', age=15)
105
+ # 1
106
+
107
+ primary_key = db.table('person').save(name='lisi', age=26)
108
+ # 4
109
+
110
+ effected_rowcount = db.insert(table='user', name='wangwu', age=38)
111
+ # 1
112
+
113
+ users = db.table('user').columns('id, name, age').select()
114
+ # result:
115
+ # (3, 'zhangsan', 15)
116
+ # (4, 'lisi', 26)
117
+ # (5, 'wangwu', 38)
118
+
119
+ users = db.table('user').columns('id, name, age').where(name='zhangsan').query()
120
+ # result:
121
+ # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
105
122
 
106
123
  users = db.select('select id, name, age from user')
107
124
  # result:
@@ -135,10 +152,10 @@ Transaction
135
152
  insert_func(....)
136
153
  update_func(....)
137
154
 
138
- You can generate model class with mysqlx-generator: https://pypi.org/project/sqlormx
155
+ If you want to use ORM, may be you need SQLORMX: https://pypi.org/project/sqlormx
139
156
 
140
157
  If you want to operate PostgreSQL database, may be you need PgSqlx: https://pypi.org/project/pgsqlx
141
158
 
142
- If you just wanted a simple sql executor, may be you need sqlx-exec: https://pypi.org/project/sqlexecx
159
+ If you just wanted a simple sql executor, may be you need SQLExecX: https://pypi.org/project/sqlexecx
143
160
 
144
- If you wanted simultaneously support MySQL and PostgreSQL, may be you need sqlx-batis: https://pypi.org/project/batisx
161
+ If you wanted simultaneously support MySQL and PostgreSQL, may be you need BatisX: https://pypi.org/project/batisx
@@ -0,0 +1,159 @@
1
+ from typing import List, Tuple
2
+ from . import sql_support
3
+ # Don't remove. Import for not repetitive implementation
4
+ from sqlexecx import insert, save, batch_insert, batch_execute, do_execute, do_save_sql, do_get, do_query,\
5
+ do_query_one, do_select, do_select_one, do_select_page, do_query_page, do_select_page, do_query_page, \
6
+ load, do_load, insert_from_csv, insert_from_df, insert_from_json, truncate_table, drop_table, table
7
+
8
+
9
+ def execute(sql: str, *args, **kwargs):
10
+ """
11
+ Execute sql return effect rowcount
12
+
13
+ Examples
14
+ --------
15
+ >>> from mysqlx import db
16
+ >>> sql = 'INSERT INTO person(name, age) VALUES(?, ?)'
17
+ >>> db.execute(sql, '张三', 20)
18
+ 1
19
+ >>> sql = 'INSERT INTO person(name, age) VALUES(:name, :age)'
20
+ >>> db.execute(sql, name='张三', age=20)
21
+ 1
22
+ """
23
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.execute', sql, *args, **kwargs)
24
+ return do_execute(sql, *args)
25
+
26
+
27
+ def get(sql: str, *args, **kwargs):
28
+ """
29
+ Execute select SQL and expected one int and only one int result, SQL contain 'limit'.
30
+
31
+ MultiColumnsError: Expect only one column.
32
+
33
+ Examples
34
+ --------
35
+ >>> from mysqlx import db
36
+ >>> sql = 'SELECT count(1) FROM person WHERE name=? and age=? LIMIT 1'
37
+ >>> db.get(sql, '张三', 20)
38
+ 1
39
+ >>> sql = 'SELECT count(1) FROM person WHERE name=:name and age=:age LIMIT 1'
40
+ >>> db.get(sql, name='张三', age=20)
41
+ 1
42
+ """
43
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.get', sql, *args, **kwargs)
44
+ return do_get(sql, *args)
45
+
46
+
47
+ def query(sql: str, *args, **kwargs) -> List[dict]:
48
+ """
49
+ Execute select SQL and return list results(dict).
50
+
51
+ Examples
52
+ --------
53
+ >>> from mysqlx import db
54
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=?'
55
+ >>> db.query(sql, '张三', 20)
56
+ [{'id': 3, 'name': '张三', 'age': 20}]
57
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age '
58
+ >>> db.query(sql, name='张三', age=20)
59
+ [{'id': 3, 'name': '张三', 'age': 20}]
60
+ """
61
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.query', sql, *args, **kwargs)
62
+ return do_query(sql, *args)
63
+
64
+
65
+ def query_one(sql: str, *args, **kwargs) -> dict:
66
+ """
67
+ Execute select SQL and return unique result(dict), SQL contain 'limit'.
68
+
69
+ Examples
70
+ --------
71
+ >>> from mysqlx import db
72
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=? LIMIT 1'
73
+ >>> db.query_one(sql, '张三', 20)
74
+ {'id': 3, 'name': '张三', 'age': 20}
75
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age LIMIT 1'
76
+ >>> db.query_one(sql, name='张三', age=20)
77
+ {'id': 3, 'name': '张三', 'age': 20}
78
+ """
79
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.query_one', sql, *args, **kwargs)
80
+ return do_query_one(sql, *args)
81
+
82
+
83
+ def select(sql: str, *args, **kwargs) -> List[Tuple]:
84
+ """
85
+ Execute select SQL and return list results(tuple).
86
+
87
+ Examples
88
+ --------
89
+ >>> from mysqlx import db
90
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=?'
91
+ >>> db.select(sql, '张三', 20)
92
+ [(3, '张三', 20)]
93
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age '
94
+ >>> db.get(sql, name='张三', age=20)
95
+ [(3, '张三', 20)]
96
+ """
97
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.select', sql, *args, **kwargs)
98
+ return do_select(sql, *args)
99
+
100
+
101
+ def select_one(sql: str, *args, **kwargs) -> Tuple:
102
+ """
103
+ Execute select SQL and return unique result(tuple), SQL contain 'limit'.
104
+
105
+ Examples
106
+ --------
107
+ >>> from mysqlx import db
108
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=? LIMIT 1'
109
+ >>> db.select_one(sql, '张三', 20)
110
+ (3, '张三', 20)
111
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age LIMIT 1'
112
+ >>> db.select_one(sql, name='张三', age=20)
113
+ (3, '张三', 20)
114
+ """
115
+ sql, args = sql_support.try_dynamic_sql('MySQLX.db.select_one', sql, *args, **kwargs)
116
+ return do_select_one(sql, *args)
117
+
118
+
119
+ def query_page(sql: str, page_num=1, page_size=10, *args, **kwargs) -> List[dict]:
120
+ """
121
+ Execute select SQL and return list or empty list if no result.
122
+
123
+ Automatically add 'limit ?,?' after sql statement if not.
124
+
125
+ Examples
126
+ --------
127
+ >>> from mysqlx import db
128
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=?'
129
+ >>> db.query_page(sql, 1, 10, '张三', 20)
130
+ [{'id': 3, 'name': '张三', 'age': 20}]
131
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age '
132
+ >>> db.query_page(sql, 1, 10, name='张三', age=20)
133
+ [{'id': 3, 'name': '张三', 'age': 20}]
134
+ """
135
+ sql, args = sql_support.try_page_mapping('query_page', sql, page_num, page_size, *args, **kwargs)
136
+ return do_query_page(sql, page_num, page_size, *args)
137
+
138
+
139
+ def select_page(sql: str, page_num=1, page_size=10, *args, **kwargs) -> List[Tuple]:
140
+ """
141
+ Execute select SQL and return list(tuple) or empty list if no result.
142
+
143
+ Automatically add 'limit ?,?' after sql statement if not.
144
+
145
+ Examples
146
+ --------
147
+ >>> from mysqlx import db
148
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=? and age=?'
149
+ >>> db.select_page(sql, 1, 10, '张三', 20)
150
+ [(3, '张三', 20)]
151
+ >>> sql = 'SELECT id, name, age FROM person WHERE name=:name and age=:age '
152
+ >>> db.select_page(sql, 1, 10, name='张三', age=20)
153
+ [(3, '张三', 20)]
154
+ """
155
+ sql, args = sql_support.try_page_mapping('select_page', sql, page_num, page_size, *args, **kwargs)
156
+ return do_select_page(sql, page_num, page_size, *args)
157
+
158
+
159
+ from .sql_page_exec import sql, page
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mysqlx
3
- Version: 2.2.5
4
- Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions. It also provides ORM operations for single tables.
3
+ Version: 2.2.6
4
+ Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions.
5
5
  Home-page: https://gitee.com/summry/mysqlx
6
6
  Author: summy
7
7
  Author-email: xiazhongbiao@126.com
@@ -115,7 +115,24 @@ Usage Sample
115
115
  # (3, 'zhangsan', 15)
116
116
 
117
117
  # you can direct execute sql with db
118
- effected_rowcount = db.insert(table='user', name='zhaoliu', age=66)
118
+ effected_rowcount = db.table('person').insert(name='zhangsan', age=15)
119
+ # 1
120
+
121
+ primary_key = db.table('person').save(name='lisi', age=26)
122
+ # 4
123
+
124
+ effected_rowcount = db.insert(table='user', name='wangwu', age=38)
125
+ # 1
126
+
127
+ users = db.table('user').columns('id, name, age').select()
128
+ # result:
129
+ # (3, 'zhangsan', 15)
130
+ # (4, 'lisi', 26)
131
+ # (5, 'wangwu', 38)
132
+
133
+ users = db.table('user').columns('id, name, age').where(name='zhangsan').query()
134
+ # result:
135
+ # [{'id': 3, 'name': 'zhangsan', 'age': 15}]
119
136
 
120
137
  users = db.select('select id, name, age from user')
121
138
  # result:
@@ -149,12 +166,12 @@ Transaction
149
166
  insert_func(....)
150
167
  update_func(....)
151
168
 
152
- You can generate model class with mysqlx-generator: https://pypi.org/project/sqlormx
169
+ If you want to use ORM, may be you need SQLORMX: https://pypi.org/project/sqlormx
153
170
 
154
171
  If you want to operate PostgreSQL database, may be you need PgSqlx: https://pypi.org/project/pgsqlx
155
172
 
156
- If you just wanted a simple sql executor, may be you need sqlx-exec: https://pypi.org/project/sqlexecx
173
+ If you just wanted a simple sql executor, may be you need SQLExecX: https://pypi.org/project/sqlexecx
157
174
 
158
- If you wanted simultaneously support MySQL and PostgreSQL, may be you need sqlx-batis: https://pypi.org/project/batisx
175
+ If you wanted simultaneously support MySQL and PostgreSQL, may be you need BatisX: https://pypi.org/project/batisx
159
176
 
160
177
 
@@ -14,14 +14,14 @@ long_description = read("README.rst")
14
14
  setup(
15
15
  name='mysqlx',
16
16
  packages=['mysqlx'],
17
- description="A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions. It also provides ORM operations for single tables.",
17
+ description="A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions.",
18
18
  long_description=long_description,
19
19
  long_description_content_type='text/markdown',
20
20
  install_requires=[
21
21
  'Jinja2>=2.7.0',
22
22
  'sqlexecx>=2.1.4',
23
23
  ],
24
- version='2.2.5',
24
+ version='2.2.6',
25
25
  url='https://gitee.com/summry/mysqlx',
26
26
  author='summy',
27
27
  author_email='xiazhongbiao@126.com',
mysqlx-2.2.5/mysqlx/db.py DELETED
@@ -1,95 +0,0 @@
1
- from . import sql_support
2
- # Don't remove. Import for not repetitive implementation
3
- from sqlexecx import insert, save, batch_insert, batch_execute, do_execute, do_save_sql, do_get, do_query,\
4
- do_query_one, do_select,do_select_one, do_select_page, do_query_page, do_select_page, do_query_page, load, do_load, insert_from_csv,\
5
- insert_from_df, insert_from_json, truncate_table, drop_table, table
6
-
7
-
8
- def execute(sql: str, *args, **kwargs):
9
- """
10
- Execute SQL.
11
- sql: INSERT INTO user(name, age) VALUES(?, ?) --> args: ('张三', 20)
12
- INSERT INTO user(name, age) VALUES(:name,:age) --> kwargs: {'name': '张三', 'age': 20}
13
- """
14
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.execute', sql, *args, **kwargs)
15
- return do_execute(sql, *args)
16
-
17
-
18
- # ----------------------------------------------------------Query function------------------------------------------------------------------
19
- def get(sql: str, *args, **kwargs):
20
- """
21
- Execute select SQL and expected one int and only one int result. Automatically add 'limit ?' after sql statement if not.
22
- MultiColumnsError: Expect only one column.
23
- sql: SELECT count(1) FROM user WHERE name=? and age=? limit 1 --> args: ('张三', 20)
24
- SELECT count(1) FROM user WHERE name=:name and age=:age limit 1 --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
25
- """
26
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.get', sql, *args, **kwargs)
27
- return do_get(sql, *args)
28
-
29
-
30
- def query(sql: str, *args, **kwargs):
31
- """
32
- Execute select SQL and return list or empty list if no result.
33
- sql: SELECT * FROM user WHERE name=? and age=? --> args: ('张三', 20)
34
- SELECT * FROM user WHERE name=:name and age=:age --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
35
- """
36
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.query', sql, *args, **kwargs)
37
- return do_query(sql, *args)
38
-
39
-
40
- def query_one(sql: str, *args, **kwargs):
41
- """
42
- Execute select SQL and expected one row result(dict). Automatically add 'limit ?' after sql statement if not.
43
- If no result found, return None.
44
- If multiple results found, the first one returned.
45
- sql: SELECT * FROM user WHERE name=? and age=? limit 1 --> args: ('张三', 20)
46
- SELECT * FROM user WHERE name=:name and age=:age limit 1 --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
47
- """
48
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.query_one', sql, *args, **kwargs)
49
- return do_query_one(sql, *args)
50
-
51
-
52
- def select(sql: str, *args, **kwargs):
53
- """
54
- Execute select SQL and return list(tuple) or empty list if no result.
55
- sql: SELECT * FROM user WHERE name=? and age=? --> args: ('张三', 20)
56
- SELECT * FROM user WHERE name=:name and age=:age --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
57
- """
58
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.select', sql, *args, **kwargs)
59
- return do_select(sql, *args)
60
-
61
-
62
- def select_one(sql: str, *args, **kwargs):
63
- """
64
- Execute select SQL and expected one row result(tuple). Automatically add 'limit ?' after sql statement if not.
65
- If no result found, return None.
66
- If multiple results found, the first one returned.
67
- sql: SELECT * FROM user WHERE name=? and age=? limit 1 --> args: ('张三', 20)
68
- SELECT * FROM user WHERE name=:name and age=:age limit 1 --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
69
- """
70
- sql, args = sql_support.try_dynamic_sql('MySQLX.db.select_one', sql, *args, **kwargs)
71
- return do_select_one(sql, *args)
72
-
73
-
74
- # ----------------------------------------------------------Page function------------------------------------------------------------------
75
- def query_page(sql: str, page_num=1, page_size=10, *args, **kwargs):
76
- """
77
- Execute select SQL and return list or empty list if no result. Automatically add 'limit ?,?' after sql statement if not.
78
- sql: SELECT * FROM user WHERE name=? and age=? --> args: ('张三', 20)
79
- SELECT * FROM user WHERE name=:name and age=:age --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
80
- """
81
- sql, args = sql_support.try_page_mapping('query_page', sql, page_num, page_size, *args, **kwargs)
82
- return do_query_page(sql, page_num, page_size, *args)
83
-
84
-
85
- def select_page(sql: str, page_num=1, page_size=10, *args, **kwargs):
86
- """
87
- Execute select SQL and return list(tuple) or empty list if no result. Automatically add 'limit ?,?' after sql statement if not.
88
- sql: SELECT * FROM user WHERE name=? and age=? --> args: ('张三', 20)
89
- SELECT * FROM user WHERE name=:name and age=:age --> kwargs: ('张三', 20) --> kwargs: {'name': '张三', 'age': 20}
90
- """
91
- sql, args = sql_support.try_page_mapping('select_page', sql, page_num, page_size, *args, **kwargs)
92
- return do_select_page(sql, page_num, page_size, *args)
93
-
94
-
95
- from .sql_page_exec import sql, page
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes