帮我生成一个python操作mysql数据库的文件,要求使用pymysql,要求下面的每个功能都编写为单独的函数,且其他文件调用这个文件中的函数能被执行,需要 一个查询数据库的函数使用这个函数会返回服务器上的所有数据库,一个能查询指定数据库中所有的表的函数,一个能向指定数据库中指定表写入数据的函数, 一个能查询指定数据库指定表中的列及数据
时间: 2024-02-12 20:03:09 浏览: 50
python操作mysql数据库.pdf
好的,根据你的要求,以下是一个使用pymysql操作MySQL数据库的Python文件,包含四个单独的函数,分别实现查询所有数据库、查询指定数据库中所有的表、向指定数据库中指定表写入数据以及查询指定数据库指定表中的列及数据的功能。
```python
import pymysql
# 查询所有数据库
def get_all_databases(host, user, password):
conn = pymysql.connect(host=host, user=user, password=password)
cursor = conn.cursor()
sql = "SHOW DATABASES"
cursor.execute(sql)
databases = [database[0] for database in cursor.fetchall()]
cursor.close()
conn.close()
return databases
# 查询指定数据库中所有的表
def get_all_tables(host, user, password, database_name):
conn = pymysql.connect(host=host, user=user, password=password, database=database_name)
cursor = conn.cursor()
sql = "SHOW TABLES"
cursor.execute(sql)
tables = [table[0] for table in cursor.fetchall()]
cursor.close()
conn.close()
return tables
# 向指定数据库中指定表写入数据
def insert_data(host, user, password, database_name, table_name, data):
conn = pymysql.connect(host=host, user=user, password=password, database=database_name)
cursor = conn.cursor()
columns = ', '.join(data.keys())
values = ', '.join(['%s']*len(data))
sql = f"INSERT INTO {table_name} ({columns}) VALUES ({values})"
cursor.execute(sql, tuple(data.values()))
conn.commit()
cursor.close()
conn.close()
# 查询指定数据库指定表中的列及数据
def get_table_data(host, user, password, database_name, table_name):
conn = pymysql.connect(host=host, user=user, password=password, database=database_name)
cursor = conn.cursor()
sql = f"SELECT * FROM {table_name}"
cursor.execute(sql)
columns = [column[0] for column in cursor.description]
data = []
for row in cursor.fetchall():
data.append(dict(zip(columns, row)))
cursor.close()
conn.close()
return data
```
使用方法:
1. 调用`get_all_databases`函数,传入MySQL服务器的主机名、用户名和密码,即可返回该服务器上的所有数据库。
```python
databases = get_all_databases('localhost', 'root', '123456')
print(databases)
```
2. 调用`get_all_tables`函数,传入MySQL服务器的主机名、用户名、密码和指定的数据库名,即可返回该数据库中的所有表格。
```python
tables = get_all_tables('localhost', 'root', '123456', 'test')
print(tables)
```
3. 调用`insert_data`函数,传入MySQL服务器的主机名、用户名、密码、指定的数据库名和表名,以及要写入的数据,即可向指定的表格中写入数据。
```python
data = {'name': '张三', 'age': 20, 'gender': '男'}
insert_data('localhost', 'root', '123456', 'test', 'users', data)
```
4. 调用`get_table_data`函数,传入MySQL服务器的主机名、用户名、密码、指定的数据库名和表名,即可返回该表格中的所有数据及列名。
```python
data = get_table_data('localhost', 'root', '123456', 'test', 'users')
print(data)
```
阅读全文