python将json数据存入mysql 
时间: 2023-05-20 12:03:56 浏览: 26
可以使用Python内置的json库将json数据转换为Python对象,然后使用MySQLdb或pymysql等Python库将Python对象存入MySQL数据库中。以下是一个示例代码:
```python
import json
import MySQLdb
# 读取json文件
with open('data.json', 'r') as f:
data = json.load(f)
# 连接MySQL数据库
conn = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test', charset='utf8')
cursor = conn.cursor()
# 将json数据存入MySQL数据库
for item in data:
sql = "INSERT INTO table_name (column1, column2, column3) VALUES (%s, %s, %s)"
cursor.execute(sql, (item['key1'], item['key2'], item['key3']))
conn.commit()
cursor.close()
conn.close()
```
其中,data.json是包含json数据的文件,table_name是MySQL数据库中的表名,column1、column2、column3是表中的列名,key1、key2、key3是json数据中的键名。
相关问题
python将json存入mysql数据库
可以使用Python内置的json库将json数据转换为Python对象,然后使用MySQLdb或pymysql等库将Python对象存入MySQL数据库中。以下是一个示例代码:
```python
import json
import MySQLdb
# 将json数据转换为Python对象
json_data = '{"name": "张三", "age": 20}'
python_obj = json.loads(json_data)
# 连接MySQL数据库
conn = MySQLdb.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
cursor = conn.cursor()
# 将Python对象存入MySQL数据库中
sql = "INSERT INTO user(name, age) VALUES (%s, %s)"
params = (python_obj['name'], python_obj['age'])
cursor.execute(sql, params)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
```
注意:在实际使用中,需要根据具体情况修改代码,比如修改数据库连接信息、修改表名和字段名等。
python将json文件中的数据存入mysql数据库
可以使用Python内置的json和pymysql库来实现。首先将json文件读取为一个Python对象,然后遍历对象将数据存入MySQL数据库中。具体步骤如下:
1. 导入json和pymysql库
```python
import json
import pymysql
```
2. 连接 MySQL 数据库
```python
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='password',
database='database_name'
)
```
3. 读取 json 文件
假设有一个名为 data.json 的 json 文件,可以使用以下代码读取该文件:
```python
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
```
4. 遍历数据,并将其存入 MySQL 数据库
```python
cur = conn.cursor()
for item in data:
# 获取数据并进行处理
name = item['name']
age = item['age']
gender = item['gender']
# 将数据插入数据库
sql = "INSERT INTO table_name (name, age, gender) VALUES ('{}', {}, '{}')".format(name, age, gender)
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
```
以上代码将 json 文件中的数据依次插入到 MySQL 数据库中。
相关推荐









这是一个比较复杂的项目,需要分几个步骤来完成。
1. 网页抓取
首先,我们需要找到一个可以获取湛江市近15天天气数据的网站。这里以天气网为例,使用 requests 库进行网页抓取。
python
import requests
from bs4 import BeautifulSoup
url = 'http://www.tianqi.com/zhanjiang/15/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
2. 数据处理
接下来,我们需要将抓取到的数据进行处理,提取出需要的信息,并将其存入 MySQL 数据库中。这里使用 pymysql 库连接数据库,并使用 pandas 库对数据进行处理。
python
import pymysql
import pandas as pd
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
db='weather',
charset='utf8'
)
# 将抓取到的数据转换成 DataFrame 格式
table = soup.find_all('table')[0]
df = pd.read_html(str(table))[0]
# 将 DataFrame 写入 MySQL 数据库
df.to_sql('zhanjiang_weather', conn, if_exists='replace', index=False)
# 关闭数据库连接
conn.close()
3. 可视化处理结果
使用 pyecharts 库将处理后的数据可视化。这里以折线图为例,绘制最高温度和最低温度的变化趋势。
python
from pyecharts.charts import Line
from pyecharts import options as opts
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
db='weather',
charset='utf8'
)
# 从数据库中读取处理后的数据
sql = 'SELECT * FROM zhanjiang_weather'
df = pd.read_sql(sql, conn)
# 绘制折线图
line = Line()
line.add_xaxis(list(df['日期']))
line.add_yaxis('最高温度', list(df['最高温度']))
line.add_yaxis('最低温度', list(df['最低温度']))
line.set_global_opts(title_opts=opts.TitleOpts(title='湛江市近15天天气变化趋势'))
line.render('zhanjiang_weather.html')
# 关闭数据库连接
conn.close()
4. Flask 前后端联通
使用 Flask 框架将前端页面和后端代码连接起来。这里以一个简单的例子为例,假设前端页面是 index.html,后端代码是 app.py。
python
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
在 index.html 中,可以通过 Ajax 请求后端接口获取数据,并使用 pyecharts 渲染出图表。
5. 额外添加首页界面和登录界面
使用 Bootstrap 框架制作首页界面和登录界面,可以让网站看起来更加美观和实用。这里以一个简单的例子为例,假设首页界面是 home.html,登录界面是 login.html。
html
<!DOCTYPE html>
<html>
<head>
<title>湛江市近15天天气变化趋势</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
天气网
天气预报
城市列表
关于我们
<form class="form-inline ml-auto">
<input class="form-control mr-sm-2" type="text" placeholder="搜索">
<button class="btn btn-success" type="submit">搜索</button>
</form>
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/pyecharts@1.9.0/dist/pyecharts.min.js"></script> <script> $(function () { $.ajax({ url: '/data', type: 'GET', dataType: 'json', success: function (data) { var chart = echarts.init(document.getElementById('chart')); var option = { title: {text: '湛江市近15天天气变化趋势'}, tooltip: {}, legend: {data: ['最高温度', '最低温度']}, xAxis: {data: data.date_list}, yAxis: {}, series: [ {name: '最高温度', type: 'line', data: data.high_temp_list}, {name: '最低温度', type: 'line', data: data.low_temp_list}, ] }; chart.setOption(option); } }); }); </script> </body> </html> html <!DOCTYPE html> <html> <head> <title>登录</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body>
登录 <form> <label for="username">用户名:</label> <input type="text" class="form-control" id="username" placeholder="请输入用户名"> <label for="password">密码:</label> <input type="password" class="form-control" id="password" placeholder="请输入密码"> <button type="submit" class="btn btn-primary">登录</button> </form> <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script> </body> </html> 在 app.py 中添加路由,将首页界面和登录界面与代码连接起来。 python @app.route('/') def home(): return render_template('home.html') @app.route('/login') def login(): return render_template('login.html') 至此,一个简单的网页抓取、数据处理、可视化、前后端联通、首页界面和登录界面的项目就完成了。
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/pyecharts@1.9.0/dist/pyecharts.min.js"></script> <script> $(function () { $.ajax({ url: '/data', type: 'GET', dataType: 'json', success: function (data) { var chart = echarts.init(document.getElementById('chart')); var option = { title: {text: '湛江市近15天天气变化趋势'}, tooltip: {}, legend: {data: ['最高温度', '最低温度']}, xAxis: {data: data.date_list}, yAxis: {}, series: [ {name: '最高温度', type: 'line', data: data.high_temp_list}, {name: '最低温度', type: 'line', data: data.low_temp_list}, ] }; chart.setOption(option); } }); }); </script> </body> </html> html <!DOCTYPE html> <html> <head> <title>登录</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body>
登录 <form> <label for="username">用户名:</label> <input type="text" class="form-control" id="username" placeholder="请输入用户名"> <label for="password">密码:</label> <input type="password" class="form-control" id="password" placeholder="请输入密码"> <button type="submit" class="btn btn-primary">登录</button> </form> <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script> </body> </html> 在 app.py 中添加路由,将首页界面和登录界面与代码连接起来。 python @app.route('/') def home(): return render_template('home.html') @app.route('/login') def login(): return render_template('login.html') 至此,一个简单的网页抓取、数据处理、可视化、前后端联通、首页界面和登录界面的项目就完成了。