Python 3.x Python 3.7.5.10.4.11查询绑定导致异常

Python 3.x Python 3.7.5.10.4.11查询绑定导致异常,python-3.x,mariadb,Python 3.x,Mariadb,在这个人为设计的示例中,我尝试选择“Fred”硬编码,然后使用绑定变量 硬选择很好。绑定变量示例失败,出现异常 import sys import string import mysql.connector def sanity_test(): try: print("connecting") connection = mysql.connector.connect(user='root', password='root',

在这个人为设计的示例中,我尝试选择“Fred”硬编码,然后使用绑定变量

硬选择很好。绑定变量示例失败,出现异常

import sys
import string
import mysql.connector

def sanity_test():
    try:
        print("connecting")
        connection = mysql.connector.connect(user='root', password='root',
                                             host='127.0.0.1', database="MyJournal")
        print("test1")
        cursor1 = connection.cursor()
        cursor1.execute("select 'Fred'")
        records = cursor1.fetchall()
        print("There are " + str(cursor1.rowcount) + " rows in the first result set")

        print("test2")
        cursor2 = connection.cursor()
        name = "Fred";
        cursor2.execute("select %s", name)
        records2 = cursor2.fetchall()
        print("There are " + str(cursor2.rowcount) + " rows in the second result set")

    except:
        e = sys.exc_info()[0]
        print ("Exception: ", e)
    else:
        cursor1.close()
        cursor2.close()
        connection.close()
    input("Press Enter to continue...")

if __name__ == '__main__':
    sanity_test()
结果输出为

connecting
test1
There are 1 rows in the first result set
test2
Exception:  <class 'mysql.connector.errors.ProgrammingError'>
我错过了什么?
除了简洁异常外,还有哪些技术可以获得更多信息?

1处理每个逻辑块的异常,例如连接,然后游标。创建+执行,但不能跨越多个块

2获取更多描述性错误消息

except mysql.connector.Error as err:
    print("Unexpected error : ", format(err))

3 SQL标准要求语句中的字符串使用单引号或双引号,例如cursor.executeSELECT'%s',foo,

对异常块达成一致。这个例子是人为的。格式错误确实有帮助。谢谢。不需要额外的报价。显然,连接器解决了这个问题。将参数设置为1值元组似乎解决了这个问题。谢谢