python 读取mysql数据库的每一张表格,给每张表格增加两列,列名称为a和b,数据类型为小数.,如果a和b列存在则跳过,并且使用多线程
时间: 2023-12-20 18:03:28 浏览: 79
可以使用多线程和Python的MySQL连接库`pymysql`来实现读取MySQL数据库的每一张表格,并给每张表格增加两列的需求。具体实现步骤如下:
1. 引入必要的库
```python
import pymysql
import threading
```
2. 定义增加列的函数
```python
def add_two_columns(cursor, table_name):
# 判断a和b列是否已存在
cursor.execute(f"DESC {table_name}")
columns = cursor.fetchall()
if ('a', 'decimal', None, None, None, None) in columns and ('b', 'decimal', None, None, None, None) in columns:
print(f"{table_name}表格已存在a和b列,跳过")
return
else:
# 增加a和b列
cursor.execute(f"ALTER TABLE {table_name} ADD COLUMN a DECIMAL(10, 2) DEFAULT NULL")
cursor.execute(f"ALTER TABLE {table_name} ADD COLUMN b DECIMAL(10, 2) DEFAULT NULL")
print(f"{table_name}表格增加a和b列成功")
```
3. 定义多线程函数
```python
def add_two_columns_multithread(db_config):
# 连接数据库
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
# 查询所有表格名
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
# 创建线程列表
threads = []
# 遍历表格名,为每个表格增加a和b列(使用多线程)
for table in tables:
t = threading.Thread(target=add_two_columns, args=(cursor, table[0]))
threads.append(t)
# 启动所有线程
for t in threads:
t.start()
# 等待所有线程完成
for t in threads:
t.join()
# 关闭数据库连接
cursor.close()
conn.close()
print("所有表格增加a和b列成功")
```
4. 调用多线程函数
```python
if __name__ == '__main__':
db_config = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "test"
}
add_two_columns_multithread(db_config)
```
在这个例子中,我们使用`pymysql`连接到名为`test`的MySQL数据库,并使用`add_two_columns_multithread`函数为其中的每个表格增加a和b列。如果表格已经存在a和b列,则跳过。使用多线程可以提高程序的运行效率。
阅读全文