Python和MySQLdb:表替换导致语法

2024-07-01 05:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要时不时地动态更改表和变量,所以我编写了一个python方法,如下所示:

    selectQ ="""SELECT * FROM  %s WHERE %s = %s;""" 
    self.db.execute(selectQ,(self.table,self.columnSpecName,idKey,))
    return self.db.store_result()

但是这会导致语法错误异常。我试着调试它,所以我打印出方法中的变量,并手动填充它们,这样就成功了。所以我不确定我做错了什么?在

是因为我想用替代品来代替桌子吗?在

另外,如何调试mysqldb,使其将被替换的查询打印为字符串?在


Tags: 方法storefromselfexecutedbreturntable
3条回答

dbapi中的参数替换只用于值,而不是表或字段。您将需要使用普通字符串替换:

selectQ ="""SELECT * FROM  %s WHERE %s = %%s;""" % (self.table,self.columnSpecName)
self.db.execute(selectQ,(idKey,))
return self.db.store_result()

注意,值占位符有一个双%-这是为了让它在初始字符串替换时保持独立。在

这是一个完整的工作示例

def rtnwkpr(tick, table, col):

    import MySQLdb as mdb
    tickwild = tick + '%'       
    try:
        con = mdb.connect(host, user, password, db);
        cur = con.cursor()
        selectq = "SELECT price FROM %s WHERE %s LIKE %%s;" % (table, col)
        cur.execute(selectq,(tickwild))
        return cur.fetchall()           

必须使用字符串替换来添加表名和列名,驱动程序只处理参数。在

埃德:嗯,丹尼尔回答得更快更全面

相关问题 更多 >

    热门问题