在python中运行mySql命令

在python中运行mySql命令,python,mysql,Python,Mysql,我有一个python程序,它连接到一个mySql表并在其中插入一些值,但它不起作用。这是我的密码: doc = minidom.parse("wscanOutput.xml") tracks = doc.getElementsByTagName("track") for track in tracks: title = track.getElementsByTagName("title")[0] location = track.getElementsByTagName

我有一个python程序,它连接到一个mySql表并在其中插入一些值,但它不起作用。这是我的密码:

 doc = minidom.parse("wscanOutput.xml")
 tracks = doc.getElementsByTagName("track")
 for track in tracks:
     title = track.getElementsByTagName("title")[0]
     location = track.getElementsByTagName("location")[0]
     vlcOption = track.getElementsByTagName("vlc:option")[0]
     tit = title.firstChild.data[6: ].replace (" ", "-")
     loc = location.firstChild.data[18:27]
     sid = vlcOption.firstChild.data[8: ]
     dvbID = 0
     tuneID = 0
     db = MySQLdb.connect("localhost","root","paco","dvbDB")
     cursor = db.cursor()
     print("INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc)
     sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc
     cursor.execute(sql)
 db.close()
下面是我的输出
print()
,显示它工作正常:

INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'IRIB-QURAN', 108, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'IRIB-SALAMAT', 119, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'IRIB-NASIM', 120, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-IRAN', 151, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-PAYAM', 152, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-JAVAN', 153, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-MAAREF', 154, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-QURAN', 155, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-FARHANG', 156, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-SALAMAT', 157, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-VARZESH', 158, 602000000)
INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (0, 0, 'RADIO-EGHTESAD', 159, 602000000)
但数据库仍然为空意味着
curser.execute(sql)
不执行。如何执行这些插入?

尝试向代码中添加
conn.commit()

conn = MySQLdb.connect("localhost","root","paco","dvbDB")
cursor = conn.cursor()
sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc
cursor.execute(sql)    
conn.commit() #notice
将连接的自动提交设置为True

conn = MySQLdb.connect("localhost","root","paco","dvbDB")
cursor = conn.cursor()
cursor.connection.autocommit(True) #notice 
sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc
cursor.execute(sql)

关于
execute
风格的一点建议

试着这样做:

sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s, %s, %s, %s, %s)"
cursor.execute(sql,(dbvID, tuneID, tit, sid, loc))
尝试将
conn.commit()
添加到代码中

conn = MySQLdb.connect("localhost","root","paco","dvbDB")
cursor = conn.cursor()
sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc
cursor.execute(sql)    
conn.commit() #notice
将连接的自动提交设置为True

conn = MySQLdb.connect("localhost","root","paco","dvbDB")
cursor = conn.cursor()
cursor.connection.autocommit(True) #notice 
sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s" % dvbID + ", %s" % tuneID + ", '%s'" % tit + ", %s" % sid + ", %s)" % loc
cursor.execute(sql)

关于
execute
风格的一点建议

试着这样做:

sql = "INSERT INTO dvbDBTable (dvb_id, tune_id, channel_name, sid, frequency) VALUES (%s, %s, %s, %s, %s)"
cursor.execute(sql,(dbvID, tuneID, tit, sid, loc))

它(
cursor.execute(sql,(dbvID,tuneID,tit,sid,loc))有何不同呢?
)没有太大区别。对我来说,
execute(query,args)
方式比组成
sql字符串更干净、更安全。如果我调用(或任何其他字段)我的一首曲目
--DROP TABLE dvbDBTable
,您是否可以:)?它(
cursor.execute(sql,(dbvID,tuneID,tit,sid,loc))
)有什么不同?没有太大的区别。对我来说,
execute(query,args)
方式比组成
sql字符串更干净、更安全。如果我调用(或任何其他字段)我的一个曲目
——DROP TABLE dvbDBTable
,您是否可以:)?