MySQLdb Python vs Bash mysql客户端

时间:2012-12-18 08:15:06

标签: python mysql-python

当我运行以下代码时,需要很长时间。另一方面,如果我在Bash中使用命令行mysql客户端实现相同的功能,它的速度提高了9倍。

我的代码有问题吗?有没有人有同样的问题? SQL结果集不是那么大。

import MySQLdb

servers = (
    {'host': 'host1',
     'schema': ('schema1', 'schema2')},

    {'host': 'host2',
     'schema': ('schema1', 'schema2')}

    ...
)

sql = """
    ...
"""

for node in servers:

    for schema in node['schema']:
        conn = MySQLdb.connect(host=node['host']), user='user', passwd='passwd')
        conn.select_db(schema)

        cursor = conn.cursor()
        cursor.execute(sql, (param1, param2, param3))

        for row in cursor.fetchall():
            print row[0], ....

        cursor.close()
        conn.close()

我也发现,如果SQL查询由于JOIN而具有表别名,我无法动态更改JOIN条件,例如。

SELECT t1.f1, t2.f2
FROM table t1 JOIN table t2 ON t1.id = t2.id AND t1.name = t2.name
WHERE t1.id = 10

如果我需要更改其他内容的t2.name,例如t2.text MySQLdb不允许我这样做:

sql = """
    SELECT t1.f1, t2.f2
    FROM table t1 JOIN table t2 ON t1.id = t2.id AND t1.name = t2.%s
    WHERE t1.id = %s
"""

cursor.execute(sql, (param1, param2))

有没有办法改变这个:t1.name = t2。%s?

0 个答案:

没有答案