Python 读取.sql文件并执行him和导出.csv文件时出现问题
我对python脚本有问题 我开始学习python,我有一个挑战,就是把我所有的shell脚本都改成python脚本 因此,我制作了以下脚本:Python 读取.sql文件并执行him和导出.csv文件时出现问题,python,Python,我对python脚本有问题 我开始学习python,我有一个挑战,就是把我所有的shell脚本都改成python脚本 因此,我制作了以下脚本: import csv import MySQLdb import sys reload(sys) conn = MySQLdb.Connection(host='MyHost', user='user', passwd='pass', db='dbname') fd = open('slect.sql',
import csv
import MySQLdb
import sys
reload(sys)
conn = MySQLdb.Connection(host='MyHost',
user='user',
passwd='pass', db='dbname')
fd = open('slect.sql', 'r')
sqlFile = fd.read()
fd.close()
sqlCommands = sqlFile.split
print("database connected")
cursor = conn.cursor()
cursor.execute(sqlCommands)
result = cursor.fetchall()
with open('/tmp/newimport.csv', 'w') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in result:
csvwriter.writerow(row)
print("csv OK")
conn.close()
我无法让Python读取.sql文件并执行它,执行后将输出保存到.csv文件
编辑:
我收到这个错误:
回溯(最近一次呼叫最后一次):
文件“newimport.py”,第18行,在
cursor.execute(sqlCommands)
文件“/usr/local/lib/python2.7/dist packages/MySQLdb/cursors.py”,执行中的第198行
errorhandler(self,TypeError,m)
defaulterrorhandler中的文件“/usr/local/lib/python2.7/dist packages/MySQLdb/connections.py”,第36行
提高errorclass,errorvalue
TypeError:query()参数1必须是字符串或只读缓冲区,而不是内置函数或方法
什么不起作用?您遇到了什么错误?我编辑了我的帖子。在您当前的示例中,错误是由于将方法ref传递给游标。执行
,因为您有一行sqlCommands=sqlFile.split
。如果您打算使用sqlCommands=sqlFile.split()
(添加一个分隔符,因为默认情况下它是一个空白,对sql没有意义),sqlCommands
将是一个列表,该列表仍然可能会出现错误光标。执行。如果您提供一个sql文件的示例,可能会有所帮助。如果只是一个select查询,您可能不需要拆分它。我忘记了sqlFile.split中的分隔符,但修复了sqlFile.split(“;”),但我遇到了相同的错误。