[英]run mySql command in python
我有一個連接到mySql表並在其中插入一些值的python程序,但是它不起作用。 這是我的代碼:
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
或 set connection's autocommit to 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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.