【问题标题】:Read in and execute multiline SQL text file into Python program在 Python 程序中读入并执行多行 SQL 文本文件
【发布时间】:2021-02-24 15:26:43
【问题描述】:

我有一个如下所示的 create_table.txt 文件:

DROP TABLE TABLE_A;
CREATE TABLE TABLE_A (
ID VARCHAR(100),
NAME VARCHAR(100),
ADDRESS VARCHAR(100)
);
ALTER TABLE TABLE_A ADD CONSTRAINT PK_TABLE_A(ID);
...

我想将该文件读入一个列表,用分号分隔,然后迭代并执行。如果这些都存在于一条线上,我可以做一个 line.split() 但新的线让我失望。

如果将其更改为 .sql 文件会更容易,我也可以这样做。

我试过了:

list1 = []
with open('create_table.txt', 'r') as f:
    for line in f:
        line.split(';')
        list1.append(line)

【问题讨论】:

    标签: python list text split


    【解决方案1】:

    一种方法使用 re.findall 并启用全点模式:

    inp = '''DROP TABLE TABLE_A;
    CREATE TABLE TABLE_A (
    ID VARCHAR(100),
    NAME VARCHAR(100),
    ADDRESS VARCHAR(100)
    );
    ALTER TABLE TABLE_A ADD CONSTRAINT PK_TABLE_A(ID);'''
    
    sql = re.findall(r'(.*?;)\s*', inp, flags=re.DOTALL)
    print(sql)
    

    打印出来:

    ['DROP TABLE TABLE_A;',
     'CREATE TABLE TABLE_A (\nID VARCHAR(100),\nNAME VARCHAR(100),\nADDRESS VARCHAR(100)\n);',
     'ALTER TABLE TABLE_A ADD CONSTRAINT PK_TABLE_A(ID);']
    

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2016-08-25
      • 1970-01-01
      • 2016-08-14
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2021-12-18
      相关资源
      最近更新 更多