我想在Linux上的Python中执行MySQL查询source FileName.sql。
我能够执行其他查询,如SELECT * FROM table_name,但这一次出现了错误。我使用Python在带有MySQL数据库的Linux服务器上执行此操作。我使用的前端是Putty。
我使用的Python脚本是:
import MySQLdb
db = MySQLdb.connect("hostname","username","pswrd","dbname")
cursor = db.cursor()
cursor.execute("source FileName.sql")
db.close()如何在文件-> source FileName.sql所在的位置执行查询FileName.sql?
发布于 2015-02-23 07:15:55
source不是SQL命令。它是一个MySQL CLI命令,它只存在于控制台应用程序mysql (以及其他实现的地方)中。它所做的就是读取FileName.sql的内容并在其中发出SQL命令。
要在python中这样做,您可以使用以下内容
编辑:这假设您每行有一个查询!如果您有多行查询,则必须找到从文件.中提取每个查询的方法。
import MySQLdb
db = MySQLdb.connect("hostname","user","pass","db")
cursor = db.cursor()
for line in open("FileName.sql"):
cursor.execute(line)
db.close()发布于 2019-02-14 17:48:03
您可以使用Python执行bash命令并导入SQL文件。
这个例子是针对MySQL的
import subprocess
command = "mysql -u username --password=p@55W0rD database_name < file.sql".split()
p = subprocess.Popen(command, stdout=subprocess.PIPE)
p.communicate() # you can see if errors are returned如果您的SQL文件创建了数据库,请删除database_name。
资料来源:
https://docs.python.org/3/library/subprocess.html#popen-constructor https://dev.mysql.com/doc/refman/8.0/en/mysql-batch-commands.html
发布于 2019-03-26 18:57:58
相同的代码片段:
import mysql.connector
cnx = mysql.connector.connect(user='root',
password='YOUR-PASSWORD-FOR-MYSQL',
host='localhost',
database='YOUR-DATABASE-NAME')
cursor =cnx.cursor()
def executeScriptsFromFile(filename):
fd = open(filename, 'r')
sqlFile = fd.read()
fd.close()
sqlCommands = sqlFile.split(';')
for command in sqlCommands:
try:
if command.strip() != '':
cursor.execute(command)
except IOError, msg:
print "Command skipped: ", msg
executeScriptsFromFile('SQL-FILE-LOCATION')
cnx.commit()https://stackoverflow.com/questions/28668467
复制相似问题