使用python在以太网内不用socket技术存储另一台电脑的csv文件数据到本地数据库
时间: 2023-12-03 18:05:11 浏览: 38
如果不使用socket技术,则需要使用其他的通信协议,比如HTTP、FTP等。这里以HTTP为例,介绍如何使用Python将另一台电脑上的CSV文件数据存储到本地数据库:
1. 在发送方电脑上启动一个HTTP服务器,将CSV文件作为一个资源文件发布到服务器上。
```python
from http.server import HTTPServer, SimpleHTTPRequestHandler
PORT = 8000 # 端口号,可以自己指定
FILE_PATH = 'filename.csv' # CSV文件的路径
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/data.csv':
with open(FILE_PATH, 'rb') as f:
self.send_response(200)
self.send_header('Content-type', 'text/csv')
self.end_headers()
self.wfile.write(f.read())
httpd = HTTPServer(('localhost', PORT), MyHandler)
print(f'Serving at localhost:{PORT}')
httpd.serve_forever()
```
2. 在接收方电脑上使用requests库发送HTTP请求获取CSV文件数据,并将数据写入本地数据库。
```python
import requests
import pandas as pd
import sqlite3
URL = 'http://发送方电脑的IP地址:8000/data.csv' # 发送方电脑的HTTP服务器地址
DB_PATH = 'database.db' # 数据库文件路径
response = requests.get(URL) # 发送HTTP GET请求获取CSV文件数据
if response.status_code == 200:
data = response.content
df = pd.read_csv(data.decode()) # 将CSV文件数据转换为DataFrame
conn = sqlite3.connect(DB_PATH) # 连接数据库
df.to_sql('table_name', conn, if_exists='replace', index=False) # 将DataFrame写入数据库
conn.close()
print('Data saved to database successfully.')
else:
print('Failed to get data from the server.')
```
需要注意的是,这种方法需要保证发送方电脑上的HTTP服务器能够被接收方电脑访问到,并且需要在防火墙中打开相应的端口。