使用python获取MySQL数据库列表

时间:2017-07-03 20:36:29

标签: python mysql database

我正在尝试通过python(2.7)获取与我的MySQL服务器关联的所有数据库的名称,但我只是获取数据库的数量。

我环顾四周,似乎唯一的答案可能是使用sys进行命令行调用,获取数据库的名称,然后从那里开始,但我不能相信这是唯一的方式。

当前代码:

import MySQLdb

serv = MySQLdb.connect(host = "localhost", user = "root", passwd = "abcdefg")

c = serv.cursor()

print c.execute("SHOW DATABASES")

输出:

4

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

我不确定mysql连接器是否与您的库相同,但使用msyql连接器您的答案将是这样的:

import mysql.connector
conn = mysql.connector.connect (user='user', password='password',
                               host='server_address',buffered=True)
cursor = conn.cursor()
databases = ("show databases")
cursor.execute(databases)
for (databases) in cursor:
     print databases[0]

答案 1 :(得分:0)

刚刚接受以前的评论和重组: 当前代码:

import MySQLdb
serv = MySQLdb.connect(host = "localhost", user = "root", passwd = "abcdefg")
c = serv.cursor()
print c.execute("SHOW DATABASES")

建议修改:

import MySQLdb
serv = MySQLdb.connect(host = "localhost", user = "root", passwd = "abcdefg")
c = serv.cursor()
c.execute("SHOW DATABASES")
l = c.fetchall()
print l
l = [ i[0] for i in l ]
print l

在我的情况下,输出看起来像(,它是所需的输出):

(('information_schema',), ('data',), ('mysql',), ('performance_schema',), ('sys',))
['information_schema', 'data', 'mysql', 'performance_schema', 'sys']

请注意以下常见错误以防止错误:如果您尝试c.execute("SHOW DATABASES").fetchall(),则会出现错误:AttributeError: 'int' object has no attribute 'fetchall'。这是你应该首先写c.execute("SHOW DATABASES"),然后是c.fetchall()