在python中读取分隔的文本文件

时间:2013-04-11 01:41:10

标签: python mysql

我有一个带有许多mysql插件的txt文件(150万)。 我需要用python读取这个文件,然后将这个文件分成每个';'对于每个查询并使用python运行查询。如何在每个';'处分割此文件?并使用python运行查询? 到目前为止,我的代码是:

import MySQLdb

db = MySQLdb.connect(host = "localhost",
                     user="root",
                     passwd="da66ro",
                     db="test")

f = open('E:/estudos/projetos/tricae/tests_python.txt')

3 个答案:

答案 0 :(得分:1)

首先打开文件:

with open('youfilename.sql', 'r') as f:
    fileAsString = f.read().replace("\n", "")

sqlStatements = fileAsString.split(";")

然后运行查询:

cursor = db.cursor()
for statement in sqlStatements:
    try:
        cursor.execute(statement)
        db.commit()
    except:     
        db.rollback()

但当然你必须意识到这是一个糟糕的主意。当你有一个引用的“;”时会发生什么你插入的字符串中的字符?你必须比你提出的问题更聪明 - 一般来说,假设你正在插入数据库的任何数据是一个很糟糕的主意。

甚至比查询破坏还要糟糕:恶意代码怎么样? SQL注入?永远不要相信你没有消毒的输入。

答案 1 :(得分:0)

好的,首先你需要读取文件并用“;”拆分,这是用split()函数完成的。然后,您可以循环或选择要执行的查询(或者只执行整个文件而不进行拆分)。你可以在这些中找到很多例子,我相信它很容易将它们组合成你需要的东西。

  

我需要read this file with pythondivide this file at each ';'查询每个查询run the query with python

答案 2 :(得分:0)

我是python的新手..这是解决方法

import io

myfile = open('69_ptc_group_mappingfile_mysql.sql')

data = (myfile.read().decode("utf-8-sig").encode("utf-8")).lower()

query_list=[]

if 'delimiter' not in data:

query_list = (data.strip()).split(";")

else:

tempv =  (data.rstrip()).split('delimiter')
for i in tempV:
    if (i.strip()).startswith("//"):
        i = i.rstrip().split("//")
        for a in i:
            if len(a)!=0:
                query_list.append(a.strip())
    else:
        corr = ((i.rstrip()).split(";"))
        for i in corr:
            if len(i.rstrip())!=0:
                query_list.append(i.rstrip())

打印query_list

for query_list中的j:cursor.execute(j)