python获取线上csv文件并用pyMySQL添加数据
时间: 2025-05-29 15:34:39 浏览: 11
### 使用Python下载在线CSV文件并通过PyMySQL插入数据到MySQL数据库
要实现从线上获取CSV文件并将数据通过 `PyMySQL` 插入 MySQL 数据库的功能,可以按照以下方法完成:
#### 下载在线 CSV 文件
可以通过 Python 的标准库 `requests` 来下载在线的 CSV 文件,并将其保存为字符串或本地文件。
```python
import requests
def download_csv(url):
response = requests.get(url)
if response.status_code == 200:
return response.text.splitlines()
else:
raise Exception(f"Failed to fetch the file, status code {response.status_code}")
```
此函数会返回一个列表,其中每一项代表 CSV 文件的一行[^1]。
#### 连接 MySQL 并插入数据
使用 PyMySQL 库来连接 MySQL 数据库并执行 SQL 查询。以下是完整的代码示例:
```python
import csv
import pymysql
def connect_to_mysql(host, user, password, database, port=3306, charset="utf8"):
try:
connection = pymysql.connect(
host=host,
user=user,
passwd=password,
db=database,
port=port,
charset=charset
)
return connection
except Exception as e:
print(f"Error connecting to MySQL: {e}")
return None
def insert_data_into_mysql(connection, table_name, data_rows):
cursor = connection.cursor()
# 动态构建SQL语句
placeholders = ', '.join(['%s'] * len(data_rows[0]))
columns = ', '.join([f'column{i}' for i in range(len(data_rows[0]))])
sql_query = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders});"
try:
cursor.executemany(sql_query, data_rows)
connection.commit()
print("Data inserted successfully.")
except Exception as e:
connection.rollback()
print(f"Error inserting data: {e}")
def process_csv_and_insert(url, mysql_config, table_name):
lines = download_csv(url)
reader = csv.reader(lines)
header = next(reader) # 跳过标题行
data_rows = []
for row in reader:
data_rows.append(row)
connection = connect_to_mysql(**mysql_config)
if connection is not None:
insert_data_into_mysql(connection, table_name, data_rows)
connection.close()
if __name__ == "__main__":
url = "https://example.com/data.csv"
mysql_config = {
'host': 'localhost',
'user': 'root',
'password': 'your_password',
'database': 'test_db'
}
table_name = "student_info"
process_csv_and_insert(url, mysql_config, table_name)
```
在此代码中:
- 函数 `download_csv()` 用于从指定 URL 获取 CSV 文件的内容。
- 函数 `connect_to_mysql()` 建立与 MySQL 数据库的连接[^1]。
- 函数 `insert_data_into_mysql()` 执行批量插入操作,将 CSV 中的数据写入目标表中。
#### 注意事项
- 如果 CSV 文件较大,建议分批处理数据以减少内存占用。
- 需要在运行脚本前安装必要的依赖库:`pip install pymysql requests`。
- 确保 MySQL 表结构已提前定义好,字段数量和类型需匹配 CSV 文件中的列数和数据类型[^2]。
---
阅读全文
相关推荐















