This question already has an answer here:
Python MySQL Connector database query with %s fails
                                
                                    (1个答案)
                                
                        
                                2年前关闭。
            
                    
在我的Cur4.execute文件中,我试图将歌手姓名与之前从cur3中获得的歌手姓名(名称= row [1])进行比较,
但我有错误:

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)

最佳答案

我不是专家,但也许尝试代替cur4.execute('SELECT * FROM artist WHERE artist.name = %s',name),用括号将字符串格式区域括起来以得到以下信息:

cur4.execute(('SELECT * FROM artist WHERE artist.name = %s',name))

编辑:实际上,我认为mshsayem是正确的(原始问题的评论)

关于python - 如何在python中使用sql中的字符串在python中执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46869952/

10-09 08:48