re-common 10.0.22__py3-none-any.whl → 10.0.24__py3-none-any.whl

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.
Files changed (202) hide show
  1. re_common/baselibrary/__init__.py +4 -4
  2. re_common/baselibrary/baseabs/__init__.py +6 -6
  3. re_common/baselibrary/baseabs/baseabs.py +26 -26
  4. re_common/baselibrary/database/mbuilder.py +132 -132
  5. re_common/baselibrary/database/moudle.py +93 -93
  6. re_common/baselibrary/database/msqlite3.py +194 -194
  7. re_common/baselibrary/database/mysql.py +169 -169
  8. re_common/baselibrary/database/sql_factory.py +26 -26
  9. re_common/baselibrary/mthread/MThreadingRun.py +486 -486
  10. re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
  11. re_common/baselibrary/mthread/__init__.py +2 -2
  12. re_common/baselibrary/mthread/mythreading.py +695 -695
  13. re_common/baselibrary/pakge_other/socks.py +404 -404
  14. re_common/baselibrary/readconfig/config_factory.py +18 -18
  15. re_common/baselibrary/readconfig/ini_config.py +317 -317
  16. re_common/baselibrary/readconfig/toml_config.py +49 -49
  17. re_common/baselibrary/temporary/envdata.py +36 -36
  18. re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
  19. re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
  20. re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
  21. re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
  22. re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
  23. re_common/baselibrary/tools/contrast_db3.py +123 -123
  24. re_common/baselibrary/tools/copy_file.py +39 -39
  25. re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
  26. re_common/baselibrary/tools/foreachgz.py +39 -39
  27. re_common/baselibrary/tools/get_attr.py +10 -10
  28. re_common/baselibrary/tools/image_to_pdf.py +61 -61
  29. re_common/baselibrary/tools/java_code_deal.py +139 -139
  30. re_common/baselibrary/tools/javacode.py +79 -79
  31. re_common/baselibrary/tools/mdb_db3.py +48 -48
  32. re_common/baselibrary/tools/merge_file.py +171 -171
  33. re_common/baselibrary/tools/merge_gz_file.py +165 -165
  34. re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
  35. re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
  36. re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
  37. re_common/baselibrary/tools/mongo_tools.py +50 -50
  38. re_common/baselibrary/tools/move_file.py +170 -170
  39. re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
  40. re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
  41. re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
  42. re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
  43. re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
  44. re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
  45. re_common/baselibrary/tools/myparsel.py +104 -104
  46. re_common/baselibrary/tools/rename_dir_file.py +37 -37
  47. re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
  48. re_common/baselibrary/tools/split_line_to_many.py +25 -25
  49. re_common/baselibrary/tools/stringtodicts.py +33 -33
  50. re_common/baselibrary/tools/workwechant_bot.py +84 -84
  51. re_common/baselibrary/utils/baseaiohttp.py +296 -296
  52. re_common/baselibrary/utils/baseaiomysql.py +87 -87
  53. re_common/baselibrary/utils/baseallstep.py +191 -191
  54. re_common/baselibrary/utils/baseavro.py +19 -19
  55. re_common/baselibrary/utils/baseboto3.py +291 -291
  56. re_common/baselibrary/utils/basecsv.py +32 -32
  57. re_common/baselibrary/utils/basedict.py +133 -133
  58. re_common/baselibrary/utils/basedir.py +241 -241
  59. re_common/baselibrary/utils/baseencode.py +351 -351
  60. re_common/baselibrary/utils/baseencoding.py +28 -28
  61. re_common/baselibrary/utils/baseesdsl.py +86 -86
  62. re_common/baselibrary/utils/baseexcel.py +264 -264
  63. re_common/baselibrary/utils/baseexcept.py +109 -109
  64. re_common/baselibrary/utils/basefile.py +654 -654
  65. re_common/baselibrary/utils/baseftp.py +214 -214
  66. re_common/baselibrary/utils/basegzip.py +60 -60
  67. re_common/baselibrary/utils/basehdfs.py +135 -135
  68. re_common/baselibrary/utils/basehttpx.py +268 -268
  69. re_common/baselibrary/utils/baseip.py +87 -87
  70. re_common/baselibrary/utils/basejson.py +2 -2
  71. re_common/baselibrary/utils/baselist.py +32 -32
  72. re_common/baselibrary/utils/basemotor.py +190 -190
  73. re_common/baselibrary/utils/basemssql.py +98 -98
  74. re_common/baselibrary/utils/baseodbc.py +113 -113
  75. re_common/baselibrary/utils/basepandas.py +302 -302
  76. re_common/baselibrary/utils/basepeewee.py +11 -11
  77. re_common/baselibrary/utils/basepika.py +180 -180
  78. re_common/baselibrary/utils/basepydash.py +143 -143
  79. re_common/baselibrary/utils/basepymongo.py +230 -230
  80. re_common/baselibrary/utils/basequeue.py +22 -22
  81. re_common/baselibrary/utils/baserar.py +57 -57
  82. re_common/baselibrary/utils/baserequest.py +279 -279
  83. re_common/baselibrary/utils/baseset.py +8 -8
  84. re_common/baselibrary/utils/basesmb.py +403 -403
  85. re_common/baselibrary/utils/basestring.py +382 -382
  86. re_common/baselibrary/utils/basetime.py +320 -320
  87. re_common/baselibrary/utils/baseurl.py +121 -121
  88. re_common/baselibrary/utils/basezip.py +57 -57
  89. re_common/baselibrary/utils/core/__init__.py +7 -7
  90. re_common/baselibrary/utils/core/bottomutils.py +18 -18
  91. re_common/baselibrary/utils/core/mdeprecated.py +327 -327
  92. re_common/baselibrary/utils/core/mlamada.py +16 -16
  93. re_common/baselibrary/utils/core/msginfo.py +25 -25
  94. re_common/baselibrary/utils/core/requests_core.py +103 -103
  95. re_common/baselibrary/utils/fateadm.py +429 -429
  96. re_common/baselibrary/utils/importfun.py +123 -123
  97. re_common/baselibrary/utils/mfaker.py +57 -57
  98. re_common/baselibrary/utils/my_abc/__init__.py +3 -3
  99. re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
  100. re_common/baselibrary/utils/mylogger.py +414 -414
  101. re_common/baselibrary/utils/myredisclient.py +861 -861
  102. re_common/baselibrary/utils/pipupgrade.py +21 -21
  103. re_common/baselibrary/utils/ringlist.py +85 -85
  104. re_common/baselibrary/utils/version_compare.py +36 -36
  105. re_common/baselibrary/utils/ydmhttp.py +126 -126
  106. re_common/facade/lazy_import.py +11 -11
  107. re_common/facade/loggerfacade.py +25 -25
  108. re_common/facade/mysqlfacade.py +467 -467
  109. re_common/facade/now.py +31 -31
  110. re_common/facade/sqlite3facade.py +257 -257
  111. re_common/facade/use/mq_use_facade.py +83 -83
  112. re_common/facade/use/proxy_use_facade.py +19 -19
  113. re_common/libtest/base_dict_test.py +19 -19
  114. re_common/libtest/baseavro_test.py +13 -13
  115. re_common/libtest/basefile_test.py +14 -14
  116. re_common/libtest/basemssql_test.py +77 -77
  117. re_common/libtest/baseodbc_test.py +7 -7
  118. re_common/libtest/basepandas_test.py +38 -38
  119. re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
  120. re_common/libtest/get_attr_test/settings.py +54 -54
  121. re_common/libtest/idencode_test.py +53 -53
  122. re_common/libtest/iniconfig_test.py +35 -35
  123. re_common/libtest/ip_test.py +34 -34
  124. re_common/libtest/merge_file_test.py +20 -20
  125. re_common/libtest/mfaker_test.py +8 -8
  126. re_common/libtest/mm3_test.py +31 -31
  127. re_common/libtest/mylogger_test.py +88 -88
  128. re_common/libtest/myparsel_test.py +27 -27
  129. re_common/libtest/mysql_test.py +151 -151
  130. re_common/libtest/pymongo_test.py +21 -21
  131. re_common/libtest/split_test.py +11 -11
  132. re_common/libtest/sqlite3_merge_test.py +5 -5
  133. re_common/libtest/sqlite3_test.py +34 -34
  134. re_common/libtest/tomlconfig_test.py +30 -30
  135. re_common/libtest/use_tools_test/__init__.py +2 -2
  136. re_common/libtest/user/__init__.py +4 -4
  137. re_common/studio/__init__.py +4 -4
  138. re_common/studio/assignment_expressions.py +36 -36
  139. re_common/studio/mydash/test1.py +18 -18
  140. re_common/studio/pydashstudio/first.py +9 -9
  141. re_common/studio/streamlitstudio/first_app.py +65 -65
  142. re_common/studio/streamlitstudio/uber_pickups.py +23 -23
  143. re_common/studio/test.py +18 -18
  144. re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +195 -0
  145. re_common/v2/baselibrary/business_utils/__init__.py +0 -0
  146. re_common/v2/baselibrary/business_utils/rel_tools.py +6 -0
  147. re_common/v2/baselibrary/decorators/utils.py +59 -59
  148. re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
  149. re_common/v2/baselibrary/tools/WeChatRobot.py +95 -79
  150. re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
  151. re_common/v2/baselibrary/tools/dict_tools.py +37 -37
  152. re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
  153. re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
  154. re_common/v2/baselibrary/tools/list_tools.py +65 -65
  155. re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
  156. re_common/v2/baselibrary/tools/text_matcher.py +326 -326
  157. re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
  158. re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
  159. re_common/v2/baselibrary/utils/author_smi.py +360 -360
  160. re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
  161. re_common/v2/baselibrary/utils/basedict.py +37 -37
  162. re_common/v2/baselibrary/utils/basehdfs.py +161 -161
  163. re_common/v2/baselibrary/utils/basepika.py +180 -180
  164. re_common/v2/baselibrary/utils/basetime.py +77 -77
  165. re_common/v2/baselibrary/utils/db.py +38 -38
  166. re_common/v2/baselibrary/utils/json_cls.py +16 -16
  167. re_common/v2/baselibrary/utils/mq.py +83 -83
  168. re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
  169. re_common/v2/baselibrary/utils/string_bool.py +186 -149
  170. re_common/v2/baselibrary/utils/string_clear.py +227 -204
  171. re_common/v2/baselibrary/utils/string_smi.py +18 -18
  172. re_common/v2/baselibrary/utils/stringutils.py +213 -213
  173. re_common/vip/base_step_process.py +11 -11
  174. re_common/vip/baseencodeid.py +90 -90
  175. re_common/vip/changetaskname.py +28 -28
  176. re_common/vip/core_var.py +24 -24
  177. re_common/vip/mmh3Hash.py +89 -89
  178. re_common/vip/proxy/allproxys.py +127 -127
  179. re_common/vip/proxy/allproxys_thread.py +159 -159
  180. re_common/vip/proxy/cnki_proxy.py +153 -153
  181. re_common/vip/proxy/kuaidaili.py +87 -87
  182. re_common/vip/proxy/proxy_all.py +113 -113
  183. re_common/vip/proxy/update_kuaidaili_0.py +42 -42
  184. re_common/vip/proxy/wanfang_proxy.py +152 -152
  185. re_common/vip/proxy/wp_proxy_all.py +181 -181
  186. re_common/vip/read_rawid_to_txt.py +91 -91
  187. re_common/vip/title/__init__.py +5 -5
  188. re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
  189. re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
  190. re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
  191. re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
  192. re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
  193. re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
  194. re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
  195. re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
  196. re_common/vip/title/transform/__init__.py +10 -10
  197. {re_common-10.0.22.dist-info → re_common-10.0.24.dist-info}/LICENSE +201 -201
  198. {re_common-10.0.22.dist-info → re_common-10.0.24.dist-info}/METADATA +16 -16
  199. re_common-10.0.24.dist-info/RECORD +230 -0
  200. {re_common-10.0.22.dist-info → re_common-10.0.24.dist-info}/WHEEL +1 -1
  201. re_common-10.0.22.dist-info/RECORD +0 -227
  202. {re_common-10.0.22.dist-info → re_common-10.0.24.dist-info}/top_level.txt +0 -0
@@ -1,194 +1,194 @@
1
- import sqlite3
2
-
3
- from re_common.baselibrary.database.moudle import Sqlite3Moudle
4
- from re_common.baselibrary.database.sql_factory import SqlFactory
5
- from re_common.baselibrary.utils.basedict import BaseDicts
6
-
7
-
8
- def dict_factory(cursor, row):
9
- """
10
- 设置返回字典
11
- :param row:
12
- :return:
13
- """
14
- d = {}
15
- for index, col in enumerate(cursor.description):
16
- d[col[0]] = row[index]
17
- return d
18
-
19
-
20
- class Sqlite3(SqlFactory):
21
- def __init__(self):
22
- # 就是conn
23
- self.db = ''
24
- self.cursor = ''
25
- self.sqlite3_moudle = {}
26
-
27
- def set_result_dict(self):
28
- def dict_factory(cursor, row):
29
- d = {}
30
- for idx, col in enumerate(cursor.description):
31
- d[col[0]] = row[idx]
32
- return d
33
-
34
- self.db.row_factory = dict_factory
35
- self.get_cursor()
36
- return self
37
-
38
- def set_encoding(self, bytes=False, encoding="gbk"):
39
- """
40
- https://blog.csdn.net/xkxjy/article/details/8179479
41
- 在不知道编码格式的情况下 使用bytes 但我没有成功
42
- :param bytes:
43
- :param encoding:
44
- :return:
45
- """
46
- # if bytes:
47
- # self.db.text_factory = bytes
48
- # else:
49
- # self.db.text_factory = lambda x: str(x, encoding, 'ignore')
50
- self.db.text_factory = lambda x: str(x, encoding, 'ignore')
51
-
52
- def link(self, sqlite3_moudle: Sqlite3Moudle):
53
- """
54
- 连接数据库
55
- :param sqlite3_moudle:
56
- :param mysqlmoudle:
57
- :return:
58
- """
59
- self.sqlite3_moudle = sqlite3_moudle
60
- # 返回连接对象
61
- dicts = sqlite3_moudle.to_dict()
62
- dicts = BaseDicts.removeDictsNone(dicts)
63
- self.db = sqlite3.connect(**dicts)
64
- self.cursor = self.db.cursor()
65
- return self.db, self.cursor
66
-
67
- def get_cursor(self) -> sqlite3.Cursor:
68
- """
69
- 本函数通过链接返回sqlite3的游标
70
- :param connect: 传入的是sqlite3的连接
71
- :return: 返回游标
72
- """
73
- assert isinstance(self.db, sqlite3.Connection)
74
- self.cursor = self.db.cursor()
75
- return self.cursor
76
-
77
- def execute(self, sql: str) -> sqlite3.Cursor:
78
- """
79
- 通过游标对象执行sql语句并返回结果
80
- :param cursor: 游标对象
81
- :param sql: 需要执行的sql语句
82
- :return: 返回结果的游标对象
83
- """
84
- assert isinstance(self.cursor, sqlite3.Cursor)
85
- result = self.cursor.execute(sql)
86
- return result
87
-
88
- def executemany(self, sql: str, seq_of_parameters) -> sqlite3.Cursor:
89
- assert isinstance(self.cursor, sqlite3.Cursor)
90
- result = self.cursor.executemany(sql, seq_of_parameters)
91
- return result
92
-
93
- def get_all_field_info(self, tablename):
94
- """
95
- 获取字段详细信息
96
- :param tablename:
97
- :return:
98
- """
99
- sql = "PRAGMA table_info({})".format(tablename)
100
- result = self.execute(sql)
101
- return result.fetchall()
102
-
103
- def get_all_field(self, tablename):
104
- """
105
- 仅仅获取字段
106
- :param tablename:
107
- :return:
108
- """
109
- listinfo = self.get_all_field_info(tablename)
110
- return [row[1] for row in listinfo]
111
-
112
- def get_table_name(self):
113
- """
114
- 获取表名
115
- :return:
116
- """
117
- sql = "select name from sqlite_master where type='table' order by name;"
118
- result = self.execute(sql)
119
- return result.fetchall()
120
-
121
- def get_rowcount(self, ) -> int:
122
- """
123
- 获取sql语句影响的行数
124
- :param cursor: 游标对象
125
- :return: 影响的行数
126
- """
127
- assert isinstance(self.cursor, sqlite3.Cursor)
128
- num = self.cursor.rowcount
129
- return num
130
-
131
- def close_cursor(self) -> None:
132
- """
133
- 关闭游标
134
- :param cursor: 游标
135
- :return: None
136
- """
137
- assert isinstance(self.cursor, sqlite3.Cursor)
138
- self.cursor.close()
139
-
140
- def my_commit(self) -> None:
141
- """
142
- 提交
143
- :param connect: 连接
144
- :return: None
145
- """
146
- assert isinstance(self.db, sqlite3.Connection)
147
- self.db.commit()
148
-
149
- def close_connect(self) -> None:
150
- """
151
- 链接关闭
152
- :param connect: 连接
153
- :return: None
154
- """
155
- assert isinstance(self.db, sqlite3.Connection)
156
- self.db.close()
157
-
158
- def __del__(self):
159
- self.close_connect()
160
-
161
- @classmethod
162
- def sqlite3_merge(cls, inpath, attachpath, tablename="modify_title_info_zt"):
163
- """
164
- 合并两个db3
165
- :param inpath:
166
- :param attachpath:
167
- :return:
168
- """
169
- conn = sqlite3.connect(inpath)
170
- conn.text_factory = str
171
- cur = conn.cursor()
172
- attach = 'attach database "' + attachpath + '" as w;'
173
- sql1 = 'insert into {} select * from w.{};'.format(tablename, tablename)
174
- cur.execute(attach)
175
- cur.execute(sql1)
176
- conn.commit()
177
- cur.close()
178
- conn.close()
179
-
180
- def create_table(self, tablename, fields: list):
181
- if self.cursor == '':
182
- self.get_cursor()
183
- sql = "PRAGMA foreign_keys = false;"
184
- self.execute(sql)
185
- sql = f'DROP TABLE IF EXISTS "{tablename}";'
186
- self.execute(sql)
187
- strings = ""
188
- for field in fields:
189
- strings = strings + f'"{field}" TEXT,'
190
- strings = strings.rstrip(',')
191
- sql = f'CREATE TABLE "{tablename}"({strings});'
192
- self.execute(sql)
193
- sql = 'PRAGMA foreign_keys = true;'
194
- self.execute(sql)
1
+ import sqlite3
2
+
3
+ from re_common.baselibrary.database.moudle import Sqlite3Moudle
4
+ from re_common.baselibrary.database.sql_factory import SqlFactory
5
+ from re_common.baselibrary.utils.basedict import BaseDicts
6
+
7
+
8
+ def dict_factory(cursor, row):
9
+ """
10
+ 设置返回字典
11
+ :param row:
12
+ :return:
13
+ """
14
+ d = {}
15
+ for index, col in enumerate(cursor.description):
16
+ d[col[0]] = row[index]
17
+ return d
18
+
19
+
20
+ class Sqlite3(SqlFactory):
21
+ def __init__(self):
22
+ # 就是conn
23
+ self.db = ''
24
+ self.cursor = ''
25
+ self.sqlite3_moudle = {}
26
+
27
+ def set_result_dict(self):
28
+ def dict_factory(cursor, row):
29
+ d = {}
30
+ for idx, col in enumerate(cursor.description):
31
+ d[col[0]] = row[idx]
32
+ return d
33
+
34
+ self.db.row_factory = dict_factory
35
+ self.get_cursor()
36
+ return self
37
+
38
+ def set_encoding(self, bytes=False, encoding="gbk"):
39
+ """
40
+ https://blog.csdn.net/xkxjy/article/details/8179479
41
+ 在不知道编码格式的情况下 使用bytes 但我没有成功
42
+ :param bytes:
43
+ :param encoding:
44
+ :return:
45
+ """
46
+ # if bytes:
47
+ # self.db.text_factory = bytes
48
+ # else:
49
+ # self.db.text_factory = lambda x: str(x, encoding, 'ignore')
50
+ self.db.text_factory = lambda x: str(x, encoding, 'ignore')
51
+
52
+ def link(self, sqlite3_moudle: Sqlite3Moudle):
53
+ """
54
+ 连接数据库
55
+ :param sqlite3_moudle:
56
+ :param mysqlmoudle:
57
+ :return:
58
+ """
59
+ self.sqlite3_moudle = sqlite3_moudle
60
+ # 返回连接对象
61
+ dicts = sqlite3_moudle.to_dict()
62
+ dicts = BaseDicts.removeDictsNone(dicts)
63
+ self.db = sqlite3.connect(**dicts)
64
+ self.cursor = self.db.cursor()
65
+ return self.db, self.cursor
66
+
67
+ def get_cursor(self) -> sqlite3.Cursor:
68
+ """
69
+ 本函数通过链接返回sqlite3的游标
70
+ :param connect: 传入的是sqlite3的连接
71
+ :return: 返回游标
72
+ """
73
+ assert isinstance(self.db, sqlite3.Connection)
74
+ self.cursor = self.db.cursor()
75
+ return self.cursor
76
+
77
+ def execute(self, sql: str) -> sqlite3.Cursor:
78
+ """
79
+ 通过游标对象执行sql语句并返回结果
80
+ :param cursor: 游标对象
81
+ :param sql: 需要执行的sql语句
82
+ :return: 返回结果的游标对象
83
+ """
84
+ assert isinstance(self.cursor, sqlite3.Cursor)
85
+ result = self.cursor.execute(sql)
86
+ return result
87
+
88
+ def executemany(self, sql: str, seq_of_parameters) -> sqlite3.Cursor:
89
+ assert isinstance(self.cursor, sqlite3.Cursor)
90
+ result = self.cursor.executemany(sql, seq_of_parameters)
91
+ return result
92
+
93
+ def get_all_field_info(self, tablename):
94
+ """
95
+ 获取字段详细信息
96
+ :param tablename:
97
+ :return:
98
+ """
99
+ sql = "PRAGMA table_info({})".format(tablename)
100
+ result = self.execute(sql)
101
+ return result.fetchall()
102
+
103
+ def get_all_field(self, tablename):
104
+ """
105
+ 仅仅获取字段
106
+ :param tablename:
107
+ :return:
108
+ """
109
+ listinfo = self.get_all_field_info(tablename)
110
+ return [row[1] for row in listinfo]
111
+
112
+ def get_table_name(self):
113
+ """
114
+ 获取表名
115
+ :return:
116
+ """
117
+ sql = "select name from sqlite_master where type='table' order by name;"
118
+ result = self.execute(sql)
119
+ return result.fetchall()
120
+
121
+ def get_rowcount(self, ) -> int:
122
+ """
123
+ 获取sql语句影响的行数
124
+ :param cursor: 游标对象
125
+ :return: 影响的行数
126
+ """
127
+ assert isinstance(self.cursor, sqlite3.Cursor)
128
+ num = self.cursor.rowcount
129
+ return num
130
+
131
+ def close_cursor(self) -> None:
132
+ """
133
+ 关闭游标
134
+ :param cursor: 游标
135
+ :return: None
136
+ """
137
+ assert isinstance(self.cursor, sqlite3.Cursor)
138
+ self.cursor.close()
139
+
140
+ def my_commit(self) -> None:
141
+ """
142
+ 提交
143
+ :param connect: 连接
144
+ :return: None
145
+ """
146
+ assert isinstance(self.db, sqlite3.Connection)
147
+ self.db.commit()
148
+
149
+ def close_connect(self) -> None:
150
+ """
151
+ 链接关闭
152
+ :param connect: 连接
153
+ :return: None
154
+ """
155
+ assert isinstance(self.db, sqlite3.Connection)
156
+ self.db.close()
157
+
158
+ def __del__(self):
159
+ self.close_connect()
160
+
161
+ @classmethod
162
+ def sqlite3_merge(cls, inpath, attachpath, tablename="modify_title_info_zt"):
163
+ """
164
+ 合并两个db3
165
+ :param inpath:
166
+ :param attachpath:
167
+ :return:
168
+ """
169
+ conn = sqlite3.connect(inpath)
170
+ conn.text_factory = str
171
+ cur = conn.cursor()
172
+ attach = 'attach database "' + attachpath + '" as w;'
173
+ sql1 = 'insert into {} select * from w.{};'.format(tablename, tablename)
174
+ cur.execute(attach)
175
+ cur.execute(sql1)
176
+ conn.commit()
177
+ cur.close()
178
+ conn.close()
179
+
180
+ def create_table(self, tablename, fields: list):
181
+ if self.cursor == '':
182
+ self.get_cursor()
183
+ sql = "PRAGMA foreign_keys = false;"
184
+ self.execute(sql)
185
+ sql = f'DROP TABLE IF EXISTS "{tablename}";'
186
+ self.execute(sql)
187
+ strings = ""
188
+ for field in fields:
189
+ strings = strings + f'"{field}" TEXT,'
190
+ strings = strings.rstrip(',')
191
+ sql = f'CREATE TABLE "{tablename}"({strings});'
192
+ self.execute(sql)
193
+ sql = 'PRAGMA foreign_keys = true;'
194
+ self.execute(sql)