使用python,将保存在电脑中的csv文件的奇数行数据传到本地数据库中,写出代码
时间: 2024-05-08 12:19:19 浏览: 10
以下是Python代码示例:
```python
import pandas as pd
import sqlite3
# read data from csv file
data = pd.read_csv('path_to_file.csv')
# filter odd rows and save to dataframe
odd_data = data.iloc[1::2]
# create connection to sqlite database
conn = sqlite3.connect('database.db')
# save odd rows to a new table in the database
odd_data.to_sql('odd_rows', conn, if_exists='replace')
# close database connection
conn.close()
```
请注意,此示例代码需要您自己根据实际情况修改文件路径和数据库名称。同时,在使用此代码时,您需要事先安装 pandas 和 sqlite3 两个 Python 模块,如果您尚未安装它们,请使用以下命令进行安装:
```python
pip install pandas
pip install sqlite3
```
相关问题
使用python在以太网内存储另一台电脑的csv文件数据到本地数据库
可以使用Python中的socket和pandas库来实现这个目标。具体步骤如下:
1. 在接收方电脑上启动一个socket服务端程序,等待发送方电脑连接并发送数据。
```python
import socket
HOST = '' # 接收方电脑的IP地址
PORT = 65432 # 端口号,可以自己指定
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024) # 接收数据,每次最多接收1024字节
if not data:
break
# 将接收到的数据写入文件或数据库
```
2. 在发送方电脑上使用pandas库读取csv文件,并将数据通过socket发送到接收方电脑。
```python
import socket
import pandas as pd
HOST = '接收方电脑的IP地址'
PORT = 65432 # 端口号,必须与接收方电脑上的端口号相同
df = pd.read_csv('filename.csv') # 读取csv文件
data = df.to_csv(index=False).encode() # 将DataFrame转换为csv格式的字节流
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(data) # 发送数据
```
3. 在接收方电脑上将接收到的数据写入本地数据库。
```python
import sqlite3
import pandas as pd
conn = sqlite3.connect('database.db') # 连接数据库
df = pd.read_csv(data.decode()) # 将接收到的csv格式的字节流转换为DataFrame
df.to_sql('table_name', conn, if_exists='replace', index=False) # 将DataFrame写入数据库
```
使用python在以太网内不用socket技术存储另一台电脑的csv文件数据到本地数据库
如果不使用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服务器能够被接收方电脑访问到,并且需要在防火墙中打开相应的端口。