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.
- {mysqlx-2.2.5 → mysqlx-2.2.6}/PKG-INFO +23 -6
- {mysqlx-2.2.5 → mysqlx-2.2.6}/README.rst +21 -4
- mysqlx-2.2.6/mysqlx/db.py +159 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/PKG-INFO +23 -6
- {mysqlx-2.2.5 → mysqlx-2.2.6}/setup.py +2 -2
- mysqlx-2.2.5/mysqlx/db.py +0 -95
- {mysqlx-2.2.5 → mysqlx-2.2.6}/LICENSE +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/__init__.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/constant.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/dbx.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/log_support.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/sql_holder.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/sql_id_exec.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/sql_mapper.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/sql_page_exec.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/sql_support.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx/support.py +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/SOURCES.txt +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/dependency_links.txt +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/not-zip-safe +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/requires.txt +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/mysqlx.egg-info/top_level.txt +0 -0
- {mysqlx-2.2.5 → mysqlx-2.2.6}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mysqlx
|
|
3
|
-
Version: 2.2.
|
|
4
|
-
Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
4
|
-
Summary: A thread safe sql executor for MySQL like MyBatis with connection pool. It helps you automatically manage database connections and transactions.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|