在我的Cur4.execute中,我試圖比較藝術家姓名與我之前從cur3(name = row [1]), 獲得的名稱,但是出現錯誤:如何在sql中使用字符串在python中執行
Traceback (most recent call last):
File "mp2.py", line 49, in <module>
cur4.execute('SELECT * FROM artist WHERE artist.name = %s',name)
File "C:\python27\lib\site-packages\MySQLdb\cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting
我該如何解決?
cur3 = db.cursor()
cur3.execute("SELECT image.link, artist.name, detail.detail_id, FROM artist, detail, image WHERE image.artist_id = artist.artist_id AND detail.image_id = image.image_id LIMIT 1")
ans = cur3.fetchall()
for row in ans:
print row[1:]
name = row[1]
db.close()
cur4 = db.cursor()
cur4.execute('SELECT * FROM artist WHERE artist.name = %s',name)
我嘗試的第一個方式,我得到了錯誤如下:回溯(最後最近一次調用): 文件 「mp2.py」 49行,在 cur4.execute(「SELECT * FROM藝術家WHERE artist.name =%s',(name,)) 文件「C:\ python27 \ lib \ site-packages \ MySQLdb \ cursors.py」,第205行,執行 self.errorhandler(self,exc,value ) 文件「C:\ python27 \ lib \ site-packages \ MySQLdb \ connections.py」,第36行,在defaulterrorhandler中 raise errorclass,errorvalue _mysql_exceptions.InterfaceError:(0,'') –
哦,我明白了。查詢中也有錯誤。你不需要'artist.',只需要'name'就可以了。答案已修復。現在試試。 – mshsayem