我正在尝试通过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
提前感谢您的帮助。
答案 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()
。