私の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)
私は、最初の方法を試みたが、次のように私はエラーを得た:トレースバック(最新の呼び出しの最後を):アーティストFROM cur4.execute( 'SELECTで ファイル "mp2.py"、49行、*ファイル "C:¥python27¥lib¥site-packages¥mysqldb¥cursors.py"、行205、実行中 self.errorhandler(self、exc、value ) ファイル "C:¥python27¥lib¥site-packages¥mysqldb¥connections.py"、36行目、defaulterrorhandler エラークラスerrorvalueを返します。 _mysql_exceptions.InterfaceError:(0、 '') –
ああそうです。クエリに間違いがあります。 'artist 'は必要ありません。単に' name'だけが行います。回答は修正されました。今すぐやってみて下さい。 – mshsayem