如何使用Python在MySQL中显示所有数据库和服务器中的表?

如何使用Python在MySQL中显示所有数据库和服务器中的表?

在开发和管理数据库时,通过Python脚本连接到MySQL服务器是一种非常方便的方法。有时候我们需要查看MySQL服务器中的所有数据库或特定数据库中的所有表信息。在这篇文章中,我们将讲解如何使用Python在MySQL中显示所有数据库和服务器中的表。

阅读更多:Python 教程

准备工作

在开始之前,我们需要先安装Python的MySQL驱动程序。在Python3中使用
“`pip“`安装:

pip install pymysql

所有数据库和所有表

所有数据库

要显示MySQL服务器中的所有数据库,我们可以编写以下代码:

import pymysql

# 连接数据库
con = pymysql.connect(host='localhost', user='root', password='123456')

# 获取游标
cursor = con.cursor()

# 执行SQL语句
cursor.execute('show databases')

# 获取所有数据库列表
databases = cursor.fetchall()

# 打印列表
for database in databases:
    print(database)

代码执行后,我们将会得到所有数据库的列表。

('information_schema',)
('mysql',)
('performance_schema',)
('test',)
'world',)

所有表

如果我们想要查看特定数据库中的所有表名,我们可以使用以下代码进行实现:

# 执行SQL语句
cursor.execute('use world')
cursor.execute('show tables')

# 获取所有表列表
tables = cursor.fetchall()

# 打印列表
for table in tables:
    print(table)

代码执行后,我们将会得到特定数据库中的所有表名。如下所示:

('city',)
('country',)
('countrylanguage',)

服务器中的所有数据库和所有表

如果我们想要显示MySQL服务器中的所有数据库或特定文档的所有表,则可以使用以下代码:

# 执行SQL语句
cursor.execute('show databases')

# 获取所有数据库列表
databases = cursor.fetchall()

# 循环遍历所有数据库
for database in databases:
    print('Database:', database[0])
    cursor.execute('use '+database[0])
    cursor.execute('show tables')
    tables = cursor.fetchall()
    for table in tables:
        print('Table:', table[0])
    print('====================')

代码执行后,我们将会得到MySQL服务器中的所有数据库以及所有表。如下所示:

Database: information_schema
Table: CHARACTER_SETS
Table: COLLATIONS
Table: COLLATION_CHARACTER_SET_APPLICABILITY
Table: COLUMNS
Table: COLUMN_PRIVILEGES
Table: ENGINES
Table: EVENTS
Table: FILES
Table: GLOBAL_STATUS
Table: GLOBAL_VARIABLES
Table: KEY_COLUMN_USAGE
Table: OPTIMIZER_TRACE
Table: PARAMETERS
Table: PARTITIONS
Table: PLUGINS
Table: PROCESSLIST
Table: PROFILING
Table: REFERENTIAL_CONSTRAINTS
Table: ROUTINES
Table: SCHEMATA
Table: SCHEMA_PRIVILEGES
Table: SESSION_STATUS
Table: SESSION_VARIABLES
Table: STATISTICS
Table: TABLES
Table: TABLESPACES
Table: TABLE_CONSTRAINTS
Table: TABLE_PRIVILEGES
Table: TRIGGERS
Table: USER_PRIVILEGES
Table: VIEWS
Table: INNODB_BUFFER_PAGE_LRU
Table: INNODB_BUFFER_PAGE
Table: INNODB_BUFFER_POOL_STATS
Table: INNODB_METRICS
Table: INNODB_CMPMEM
Table: INNODB_CMP
Table: INNODB_LOCKS
Table: INNODB_SYS_TABLESPACES
Table: INNODB_SYS_DATAFILES
Table: INNODB_SYS_SEMAPHORE_WAITS
Table: INNODB_MUTEX
Table: INNODB_SYS_FOREIGN_COLS
Table: INNODB_SYS_FOREIGN
Table: INNODB_SYS_FIELDS
Table: INNODB_SYS_COLUMNS
Table: INNODB_SYS_INDEXES
Table: INNODB_SYS_TABLES
Table: INNODB_TABLESPACES_ENCRYPTION
====================
Database: mysql
Table: columns_priv
Table: db
Table: engine_cost
Table: event
Table: func
Table: general_log
Table: gtid_slave_pos
Table: help_category
Table: help_keyword
Table: help_relation
Table: help_topic
Table: innodb_index_stats
Table: innodb_table_stats
Table: ndb_binlog_index
Table: plugin
Table: proc
Table: procs_priv
Table: proxies_priv
Table: roles_mapping
Table: schema_index_statistics
Table: schema_table_lock_waits
Table: schema_table_statistics
Table: schema_table_statistics_with_buffer
Table: slave_master_info
Table: slave_relay_log_info
Table: slave_worker_info
Table: slow_log
Table: tables_priv
Table: time_zone
Table: time_zone_leap_second
Table: time_zone_name
Table: time_zone_transition
Table: time_zone_transition_type
Table: user
Table: user_attributes
====================
Database: performance_schema
Table: accounts
Table: host_cache
Table: performance_timers
Table: session_account_connect_attrs
Table: session_connect_attrs
Table: setup_actors
Table: setup_consumers
Table: setup_instruments
Table: setup_objects
Table: setup_timers
Table: threads
====================
Database: test
Table: person
====================
Database: world
Table: city
Table: country
Table: countrylanguage
====================

结论

通过这篇文章,我们学习了如何使用Python连接到MySQL服务器,查看所有数据库和服务器中的所有表信息。我们在代码中使用
“`pymysql“`库连接MySQL服务器,并执行“`SHOW DATABASES“`和“`SHOW TABLES“`语句来获取所有数据库和表列表。这将为我们管理和维护MySQL数据库提供非常有用的信息。

我们要记住MySQL安全相关提示,可以使用数据库用户和密码,而不是用root用户和密码连接MySQL服务器,在编写Python脚本时,可以针对性的添加具体权限,而不是使用最高权限。这样可以保证MySQL的安全性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程