我有一个带有许多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')
答案 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 python和divide 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)