mdbq 1.0.8__tar.gz → 1.1.0__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.
Files changed (46) hide show
  1. {mdbq-1.0.8 → mdbq-1.1.0}/PKG-INFO +1 -1
  2. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/mysql_types.py +7 -7
  3. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mysql/mysql.py +44 -12
  4. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq.egg-info/PKG-INFO +1 -1
  5. {mdbq-1.0.8 → mdbq-1.1.0}/setup.py +1 -1
  6. {mdbq-1.0.8 → mdbq-1.1.0}/README.txt +0 -0
  7. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/__init__.py +0 -0
  8. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/__version__.py +0 -0
  9. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/__init__.py +0 -0
  10. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/aggregation.py +0 -0
  11. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/df_types.py +0 -0
  12. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/optimize_data.py +0 -0
  13. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/aggregation/query_data.py +0 -0
  14. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/bdup/__init__.py +0 -0
  15. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/bdup/bdup.py +0 -0
  16. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/clean/__init__.py +0 -0
  17. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/clean/data_clean.py +0 -0
  18. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/company/__init__.py +0 -0
  19. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/company/copysh.py +0 -0
  20. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/config/__init__.py +0 -0
  21. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/config/get_myconf.py +0 -0
  22. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/config/products.py +0 -0
  23. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/config/set_support.py +0 -0
  24. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/config/update_conf.py +0 -0
  25. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/dataframe/__init__.py +0 -0
  26. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/dataframe/converter.py +0 -0
  27. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/log/__init__.py +0 -0
  28. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/log/mylogger.py +0 -0
  29. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mongo/__init__.py +0 -0
  30. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mongo/mongo.py +0 -0
  31. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mysql/__init__.py +0 -0
  32. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mysql/data_types_/345/215/263/345/260/206/345/210/240/351/231/244.py" +0 -0
  33. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mysql/s_query.py +0 -0
  34. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/mysql/year_month_day.py +0 -0
  35. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/other/__init__.py +0 -0
  36. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/other/porxy.py +0 -0
  37. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/other/pov_city.py +0 -0
  38. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/other/ua_sj.py +0 -0
  39. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/pbix/__init__.py +0 -0
  40. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/pbix/pbix_refresh.py +0 -0
  41. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/pbix/refresh_all.py +0 -0
  42. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq/spider/__init__.py +0 -0
  43. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq.egg-info/SOURCES.txt +0 -0
  44. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq.egg-info/dependency_links.txt +0 -0
  45. {mdbq-1.0.8 → mdbq-1.1.0}/mdbq.egg-info/top_level.txt +0 -0
  46. {mdbq-1.0.8 → mdbq-1.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 1.0.8
3
+ Version: 1.1.0
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -133,19 +133,19 @@ class DataTypes:
133
133
  if cl in self.datas.keys():
134
134
  if db_name in list(self.datas[cl].keys()):
135
135
  if table_name in list(self.datas[cl][db_name].keys()):
136
- return self.datas[cl][db_name][table_name]
136
+ return self.datas[cl][db_name][table_name], None, None, None
137
137
  else:
138
138
  print(f'不存在的集合名信息: {table_name}, 文件位置: {self.json_file}')
139
- mysql_all_dtypes(db_name=db_name, table_name=table_name) # 更新一个表的 dtypes
140
- return {}
139
+ # mysql_all_dtypes(db_name=db_name, table_name=table_name) # 更新一个表的 dtypes
140
+ return {}, cl, db_name, table_name
141
141
  else:
142
142
  print(f'不存在的数据库信息: {db_name}, 文件位置: {self.json_file}')
143
- mysql_all_dtypes(db_name=db_name) # 更新一个数据库的 dtypes
144
- return {}
143
+ # mysql_all_dtypes(db_name=db_name) # 更新一个数据库的 dtypes
144
+ return {}, cl, db_name, None
145
145
  else:
146
146
  print(f'不存在的数据分类: {cl}, 文件位置: {self.json_file}')
147
- mysql_all_dtypes() # 更新所有数据库所有数据表的 dtypes 信息到本地 json
148
- return {}
147
+ # mysql_all_dtypes() # 更新所有数据库所有数据表的 dtypes 信息到本地 json
148
+ return {}, cl, None, None # 返回这些结果的目的是等添加完列再写 json 文件才能读到 types 信息
149
149
 
150
150
 
151
151
  def mysql_all_dtypes(db_name=None, table_name=None, path=None):
@@ -48,7 +48,7 @@ class MysqlUpload:
48
48
  print(f'{db_name}: {table_name} 传入的 df 数据长度为0')
49
49
  return
50
50
  else:
51
- print(f'{db_name}: {table_name} 传入的 df 不是 dataframe 结构')
51
+ print(f'{db_name}: {table_name} 传入的 df 不是有效的 dataframe 结构')
52
52
  return
53
53
  cv = converter.DataFrameConverter()
54
54
  df = cv.convert_df_cols(df=df) # 清理 dataframe 非法值
@@ -82,7 +82,7 @@ class MysqlUpload:
82
82
  print(f'创建 mysql 表: {table_name}')
83
83
 
84
84
  # 2. 列数据类型转换,将 df 数据类型转换为 mysql 的数据类型
85
- dtypes = self.convert_dtypes(df=df, db_name=db_name, table_name=table_name)
85
+ dtypes, cl, db_n, tb_n = self.convert_dtypes(df=df, db_name=db_name, table_name=table_name)
86
86
 
87
87
  # 有特殊字符不需转义
88
88
  sql = f"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{db_name}' AND TABLE_NAME = '{table_name}';"
@@ -109,6 +109,14 @@ class MysqlUpload:
109
109
  pass
110
110
  connection.commit() # 提交事务
111
111
 
112
+ # 返回这些结果的目的是等添加完列再写 json 文件才能读到 types 信息
113
+ if cl and db_n and tb_n:
114
+ mysql_types.mysql_all_dtypes(db_name=db_name, table_name=table_name) # 更新一个表的 dtypes
115
+ elif cl and db_n:
116
+ mysql_types.mysql_all_dtypes(db_name=db_name) # 更新一个数据库的 dtypes
117
+ elif cl:
118
+ mysql_types.mysql_all_dtypes() # 更新所有数据库所有数据表的 dtypes 信息到本地 json
119
+
112
120
  # 4. 移除指定日期范围内的数据,仅限于聚合数据使用,其他情况不要设置
113
121
  if drop_duplicates and '日期' in df.columns.tolist():
114
122
  dates = df['日期'].values.tolist()
@@ -139,8 +147,8 @@ class MysqlUpload:
139
147
  if not result: # 数据不存在则插入
140
148
  sql = f"INSERT INTO `{table_name}` ({cols}) VALUES ({values});"
141
149
  cursor.execute(sql)
142
- except:
143
- pass
150
+ except Exception as e:
151
+ print(f'mysql -> df_to_mysql 报错: {e}')
144
152
  connection.commit() # 提交事务
145
153
 
146
154
  def convert_dtypes(self, df, db_name, table_name):
@@ -155,7 +163,7 @@ class MysqlUpload:
155
163
  # path = set_support.SetSupport(dirname='support').dirname
156
164
  d = mysql_types.DataTypes()
157
165
  # 从本地文件中读取 dtype 信息
158
- dtypes = d.load_dtypes(cl='mysql', db_name=db_name, table_name=table_name)
166
+ dtypes, cl, db_n, tb_n = d.load_dtypes(cl='mysql', db_name=db_name, table_name=table_name)
159
167
  # 可能会因为没有 json 文件, 返回 None
160
168
  if dtypes:
161
169
  # 按照文件记录更新 dtypes
@@ -171,7 +179,7 @@ class MysqlUpload:
171
179
  dtypes.update({col: self.convert_dtype_to_sql(df=df, col=col, dtype=df[col].dtype) for col in col_not_exist})
172
180
  # 至此 df 中全部列类型已经转换完成
173
181
  # 返回结果, 示例: {'上市年份': 'mediumtext', '商品id': 'mediumtext', '平台': 'mediumtext'}
174
- return dtypes
182
+ return dtypes, cl, db_n, tb_n # 返回这些结果的目的是等添加完列再写 json 文件才能读到 types 信息
175
183
 
176
184
  def convert_dtype_to_sql(self, df, col, dtype):
177
185
  """ 按照以下规则转换DataFrame列的数据类型为 MYSQL 专有的数据类型 """
@@ -199,7 +207,29 @@ class MysqlUpload:
199
207
  return 'mediumtext'
200
208
  return 'INT'
201
209
  elif dtype == 'float64':
202
- return 'double' # mysql 中不要使用 float 类型,会影响计算结果
210
+ # step = len(str(max(df[col].tolist()))) # 数字长度包含小数点
211
+ int_step = len(str(max(df[col].tolist())).split('.')[0]) # 整数位数长度
212
+ f_step = len(str(max(df[col].tolist())).split('.')[1]) # 小数位数长度
213
+ if int_step >= 12:
214
+ return 'mediumtext' # mysql 中不要使用 float 和 double 类型,会影响计算结果
215
+ elif int_step >= 8 and f_step >= 0:
216
+ return 'decimal(16, 2)'
217
+ elif int_step >= 6 and f_step >= 0:
218
+ return 'decimal(10, 2)'
219
+ elif int_step >= 4 and f_step >= 0:
220
+ return 'decimal(10, 2)'
221
+ elif int_step >= 2 and f_step >= 6:
222
+ return 'decimal(12, 4)'
223
+ elif int_step >= 2 and f_step >= 4:
224
+ return 'decimal(10, 4)'
225
+ elif int_step >= 2 and f_step >= 0:
226
+ return 'decimal(10, 2)'
227
+ elif int_step >= 1 and f_step >= 6:
228
+ return 'decimal(10, 6)'
229
+ elif int_step >= 1 and f_step >= 4:
230
+ return 'decimal(10, 4)'
231
+ else:
232
+ return 'decimal(10, 2)'
203
233
  elif dtype == 'object':
204
234
  return 'mediumtext'
205
235
  else:
@@ -647,8 +677,8 @@ def download_datas(table_name, save_path, start_date):
647
677
  df.to_csv(path, index=False, encoding='utf-8_sig', header=True)
648
678
 
649
679
 
650
- def one_file_to_mysql(file, db_name, table_name):
651
- username, password, host, port = get_myconf.select_config_values(target_service='home_lx', database='mysql')
680
+ def one_file_to_mysql(file, db_name, table_name, target_service, database):
681
+ username, password, host, port = get_myconf.select_config_values(target_service=target_service, database=database)
652
682
 
653
683
  df = pd.read_csv(file, encoding='utf-8_sig', header=0, na_filter=False)
654
684
  m = MysqlUpload(username=username, password=password, host=host, port=port)
@@ -659,11 +689,13 @@ if __name__ == '__main__':
659
689
  username, password, host, port = get_myconf.select_config_values(target_service='company', database='mysql')
660
690
  print(username, password, host, port)
661
691
 
662
- file = '/Users/xigua/数据中心/原始文件2/属性设置/城市等级.csv'
692
+ file = '/Users/xigua/Downloads/余额查询.csv'
663
693
  one_file_to_mysql(
664
694
  file=file,
665
- db_name='属性设置2',
666
- table_name='城市等级',
695
+ db_name='test',
696
+ table_name='余额查询',
697
+ target_service='company',
698
+ database='mysql'
667
699
  )
668
700
 
669
701
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 1.0.8
3
+ Version: 1.1.0
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,7 +3,7 @@
3
3
  from setuptools import setup, find_packages
4
4
 
5
5
  setup(name='mdbq',
6
- version='1.0.8',
6
+ version='1.1.0',
7
7
  author='xigua, ',
8
8
  author_email="2587125111@qq.com",
9
9
  url='https://pypi.org/project/mdbsql',
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
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
File without changes
File without changes