Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在MySQL命令中使用%s时出现问题_Python_Mysql - Fatal编程技术网

Python 在MySQL命令中使用%s时出现问题

Python 在MySQL命令中使用%s时出现问题,python,mysql,Python,Mysql,我试图(通过使用python脚本)自动创建MySQL角色,但由于某些原因,我无法将字符串变量放入MySQL命令中。到目前为止,我得到的是: #!/usr/bin/python3 import mysql.connector from mysql.connector import errorcode # Open database connection try: serverHostName='localhost' userName='root'

我试图(通过使用python脚本)自动创建MySQL角色,但由于某些原因,我无法将字符串变量放入MySQL命令中。到目前为止,我得到的是:

#!/usr/bin/python3

import  mysql.connector
from    mysql.connector import errorcode 


# Open database connection
try:

        serverHostName='localhost'
        userName='root'
        passwd='password'
        databaseName='mysql'
        roleName='reader'

        cnx = mysql.connector.connect(
        host=serverHostName,
        database=databaseName, 
        user=userName, 
        password=passwd)

        cursor=cnx.cursor(prepared=True)
        dropRole="""DROP ROLE IF EXISTS %s """

        print(dropRole, roleName)
        #cursor.execute(dropRole, roleName)
        #cnx.commit()



except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cnx.close()
  print("You have successfully disconnected from your MySQL database")
结果如下:

DROP ROLE IF EXISTS %s  reader
You have successfully disconnected from your MySQL database

如果有人能向我解释为什么%s和读卡器出现在我的打印行中,我将不胜感激。

您没有调用格式化操作符将
roleName
替换到字符串中,所以它只是打印格式字符串。使用
%
运算符执行格式化

print(dropRole % roleName)