Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取.sql文件并执行him和导出.csv文件时出现问题_Python - Fatal编程技术网

Python 读取.sql文件并执行him和导出.csv文件时出现问题

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',

我对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', '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(“;”),但我遇到了相同的错误。