<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      手寫 Django orm反向遷移 MySQL

      
      import pymysql, os
      
      #### settings
      db = {
          'NAME': '',
          'USER': '',
          'PASSWORD': '',
          'HOST': '',
          'PORT': '',
      }
      table_name_list = []  # 表名列表,如果為空則查詢庫中所有的表
      address = ""  # 存放文件的位置,如果為空則為當前路徑
      
      
      #### settings_end
      
      # 對結果集美化方法
      def dictfetchall(cursor):
          # 獲取游標描述
          desc = cursor.description
          return [
              dict(zip([col[0] for col in desc], row))
              for row in cursor.fetchall()
          ]
      
      
      modelsType = {
          'nvarchar': "CharField",
          'varchar': "CharField",
          'char': "CharField",
          'int': "IntegerField",
          'decimal': "DecimalField",
          'datetime': "DateTimeField",
          'real': "FloatField",
          "varbinary": "CharField",
          'text': "TextField",
          'date': "DateField",
          "datetime2": "DateTimeField",
          "float": "FloatField",
          "bit": "BooleanField",
          "smallint": "IntegerField",
          "pk": "AutoField",
          "bigint": "BigIntegerField",
          "longtext": "TextField",
          "double": "IntegerField",
      }
      
      conn = pymysql.connect(
          host=db['HOST'], user=db['USER'], password=db['PASSWORD'], database=db['NAME'])
      cur = conn.cursor()
      if not cur:
          raise (NameError, "連接數據庫失敗")
      if not table_name_list:
          cur.execute("show tables;")
          table_name_list = dictfetchall(cur)
          table_name_list = [i['Tables_in_brm_db'] for i in table_name_list]
      print(len(table_name_list))
      address = "models.py" if not address else os.path.join(address, 'models.py')
      with open(address, mode="w", encoding="utf-8") as f:
          f.write('from django.db import models\n\n')
          tc = []
          for table_name in table_name_list:  # table_name    表名
              if table_name in tc:
                  continue
              else:
                  tc.append(table_name)
                  sql = "desc %s;" % table_name
                  cur.execute(sql)
                  l_list = dictfetchall(cur)  # 這張表的數據
                  print(l_list)
                  table_modol = "\nclass %s(models.Model):" % "".join([i.capitalize() for i in table_name.split('_')])
                  for l in l_list:
                      l_modol_in = 'db_column="%s"' % l['Field']
                      print("l['Type']", l['Type'])
                      lType = l['Type'].split('(')
                      dataType = lType[0]
                      dataLong = lType[1].replace(")", "") if len(lType) == 2 else 0
                      print("數據類型, 長度", dataType, dataLong)
                      if dataLong and modelsType[dataType] == "DecimalField":
                          l_modol_in += f", max_digits={dataLong.split(',')[0]}, decimal_places={dataLong.split(',')[1]}"
                      elif dataLong and int(dataLong) > 0 and modelsType[dataType] != "IntegerField" \
                              and dataType != "DateTimeField":
                          l_modol_in += f", max_length={dataLong}"
                      if l['Key'] == "PRI":
                          dataType = 'pk'
                          l_modol_in += ', primary_key=True'
                      if l['Null'] == "yes":
                          l_modol_in += ', blank=True, null=True'
                      if l['Default']:
                          l_modol_in += ", default=%s" % (l['Default'] if l['Default'].isdigit() else '"%s"' % l['Default'])
                      l_modol = "\n    %s = models.%s(%s)" % (l['Field'], modelsType[dataType], l_modol_in)  # orm的每列字段
                      table_modol += l_modol
      
                  meta_info = "\n\n    class Meta:\n        managed = False\n        db_table = '%s'\n\n" % table_name
      
                  f.write(table_modol)
                  f.write(meta_info)
      conn.close()
      print("models生成完成\n生成表為%s" % [i for i in tc])
      
      posted @ 2023-06-12 16:11  最冷不過冬夜  閱讀(20)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲欧洲av综合一区二区三区| 精品国产中文字幕懂色| 国产精品久久久久7777| 国内精品大秀视频日韩精品| 日本熟妇XXXX潮喷视频| 青青草原国产精品啪啪视频| 久久精品国产福利一区二区| www插插插无码免费视频网站 | 日韩有码国产精品一区| 国内精品久久久久影视| 久久精品国产亚洲av天海翼| 国产精品毛片大码女人| 中文字幕无码免费不卡视频| 蜜臀av一区二区精品字幕| 欧美乱妇狂野欧美在线视频| 中文字幕国产精品日韩| 成人国产精品中文字幕| 国产在线欧美日韩精品一区| 疯狂的欧美乱大交| 国产精品久久人妻无码网站一区| 国产精品福利自产拍久久| 国产福利姬喷水福利在线观看| 国产精品久久蜜臀av| 亚洲 中文 欧美 日韩 在线 | 精品午夜福利无人区乱码| 国产精品高潮无码毛片| 常德市| 99久久成人亚洲精品观看| 亚洲天堂激情av在线| 国产乱子伦无套一区二区三区| 色成人精品免费视频| 精品尤物国产尤物在线看| 99久热在线精品视频| 一面膜上边一面膜下边视频| 亚洲熟妇中文字幕五十路| 人妻无码不卡中文字幕系列| 国产精品成人午夜福利| 无码av天天av天天爽| 3d无码纯肉动漫在线观看| 日韩人妻无码一区二区三区综合部| 无线乱码一二三区免费看|