MySQLdb Python写/读方法

时间:2013-12-05 08:31:17

标签: python mysql-python

我在Python中使用MySQLDB做了一点工作,并认为我理解它是如何工作的。 但现在我想定义自己的方法以更灵活。阅读代码......

import MySQLdb as mydb

class DB(object):
    def read(self, slct, frm):
        connection = mydb.connect("123.12.34.56", "user", "pass", "foo")
        cursor = connection.cursor()
        cursor.execute("SELECT %s FROM %s", (slct, frm))
        print cursor.fetchall()

        connection.close()


if __name__ == '__main__':
    db = DB()
    db.read("*", "bar")

这会引发一个SQL语法错误。为什么我不能这样用呢?

  

ProgrammingError:(1064,“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第1行的''bar'附近使用正确的语法”)

2 个答案:

答案 0 :(得分:1)

我不太确定mysqldb,但通常(至少在pyodbc和sqlite中)你不能参数化列或表名,只能参数值。您可以对*和表名部分使用Python的字符串格式,并使用其余的参数。例如:

cursor.execute('SELECT {col} FROM {table} WHERE foo=%s'.format(col='*', table='bar'), ('my value',))

答案 1 :(得分:0)

有一个拼写错误 -

cursor.execute("SELECT %s FROM %s"%(slct, frm))