协助Python功能

时间:2018-10-01 22:13:52

标签: python mysql

我几乎没有编码经验,但是我的任务是编写python脚本来完成任务。我要使用此功能的方法是进入目录(目录将始终具有相同的名称)并在SQL文件中搜索特定行。我想将_tenant_name添加到数据库名称的末尾。而且,如果未压缩ROW_FORMAT,我想将其更改为压缩。目前,该功能没有执行任何操作,而我试图找出原因。

我已经使它起作用了。如何将旧文件的内容写入新文件,而又不留空白?

import os 
import re
import time
import logging

tenant_name = 'tenant_name' #args.tenant_name

def do_schemaImport():
    directory = os.getcwd()

    for filename in os.listdir(directory):
        schema = os.path.basename(filename)
        new_schema = schema + '_' + tenant_name

        f1 = open(filename, 'r') 
        f2 = open(directory + "/" + new_schema + ".sql", 'w')
        line = f1.readlines()


        while line in f1:
                db = re.compile(r"DROP DATABASE{1}|^USE{1}|CREATE 
DATABASE{1}")
                compression = re.compile(r"ENGINE=INNODB*")


                if re.match(db, f1) in line:
                    line.replace(schema, new_schema)
                    logging.info(line)

                if re.match(compression, f1) in line and re.match(r";","ROW_FORMAT=COMPRESSED;", f1):
                    line = line.replace("ROW_FORMAT=COMPRESSED;")          
                    f2.write(line)

    f1.close()
    f2.close() 


do_schemaImport()   

示例SQL文件。

    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `configurationservice` /*!40100 
DEFAULT CHARACTER SET utf8 */;

USE `configurationservice`;

--
-- Table structure for table `class`
--

   DROP TABLE IF EXISTS `class`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
  /*!40101 SET character_set_client = utf8 */;
  CREATE TABLE `class` (
`class_id` bigint(20) NOT NULL AUTO_INCREMENT,
 `value` varchar(255) NOT NULL,
 PRIMARY KEY (`class_id`),
 UNIQUE KEY `XIE1EVENTDATACLASSVALUE` (`value`)
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 
ROW_FORMAT=COMPRESSED;
    /*!40101 SET character_set_client = @saved_cs_client */;

0 个答案:

没有答案