使用pymysql对mysql进行数据插入

前言

在写上位机代码时候,需要将采集的数据存入数据库中。这里进行了简单的研究(因为表涉及2张,此外创建表也研究了会)特记录下。

这里有组数据需要存入表中,表结构为一个主表一个从表

2张表的DDL

-- AS01.sensor_test definition

CREATE TABLE sensor_test (
 id int(11) NOT NULL AUTO_INCREMENT,
 test_mode varchar(100) NOT NULL,
 test_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- AS01.test_database definition

CREATE TABLE test_database (
 id int(11) NOT NULL AUTO_INCREMENT,
 pid int(11) NOT NULL,
 angle float DEFAULT NULL,
 voltage float DEFAULT NULL,
 PRIMARY KEY (id),
 KEY test_database_FK (pid),
 CONSTRAINT test_database_FK FOREIGN KEY (pid) REFERENCES sensor_test (id)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

python语句

import pymysql
conn = pymysql.connect(# 这里需要填入你自己数据的信息
   host='your_host_name',
   user='your_user_name',
   password='your_password',
   database='AS01' # 操作的表名
)

cursor = conn.cursor()

test_mode = '5'
sql = "INSERT INTO sensor_test (test_mode) VALUES (%s)"
val = [test_mode]
cursor.execute(sql, val)

# 获取新插入的数据的id
new_id = cursor.lastrowid

# 插入数据到从表
data = [[1, 2.3], [2, 3.3], [3, 4.4]]
for row in data:
   sql = "INSERT INTO test_database (pid, angle, voltage) VALUES (%s, %s, %s)"
   val = [new_id] + row
   cursor.execute(sql, val)

# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()

运行后,数据库数据如下:

简单测试下:

SELECT * FROM AS01.test_database WHERE pid = 3

PS:
存入后,为了方便其他客户查看数据,需要把存入的数据保存成表格使用


import pandas as pd
import pymysql

# 连接数据库
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    database='AS01'
)

# 查询数据
sql = "SELECT * FROM AS01.test_database WHERE pid = 3"
df = pd.read_sql(sql, conn)

# 写入CSV文件
df.to_csv('data3.csv', index=False)

# 关闭连接
conn.close()

posted @ 2023-06-09 11:13  重拾初心的青年人  阅读(482)  评论(0)    收藏  举报