2.Python 脚本将json数据转成SQL插入数据库
SQL查询:SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;
第一部分:SQL数据--->json数据
--------脚本内容-------sqltojson.py-------------------
#!/usr/bin/env python
#-*- coding: utf8 -*-
import MySQLdb
import json
# 定义查询SQL语句
sql = "SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;"
# 设置列的别名或者直接用表字段名:(下面的sql含有别名)
# sql="SELECT s.id AS 1_id,s.name AS 2_na,s.local AS 3_lo,s.mobile AS 4_mo,s.CreateTime AS 5_ct FROM db1.s1 s;"
# 定义连接MySQL的登录信息(此处以字典形式)
Loginfo = {'USER':'admin', 'PSWD':'admin', 'HOST':'10.10.60.108', 'PORT':4001}
# Python 连接MySQL
conn=MySQLdb.connect(host=Loginfo['HOST'],user=Loginfo['USER'],passwd=Loginfo['PSWD'],port=Loginfo['PORT'],charset='utf8')
cur=conn.cursor()
cur.execute(sql) # 执行SQL查询
data = cur.fetchall() # 查询结果给data。如果执行:print data 显示结果:((第一行内容),(第二行内容),(第三行内容),(第四行内容))
fields = cur.description # 获取查询结果中列的字段名,如果查询SQL中使用别名,此处显示别名。
cur.close()
conn.close()
# Main
column_list = [] # 定义字段名的列表
for i in fields:
column_list.append(i[0]) # 提取字段名,追加到列表中
#print column_list # 列表显示结果:['id', 'NAME', 'LOCAL', 'mobile', 'CreateTime']
with open('/data/scripts/logdb/json.txt','w+') as f: # 打开输出结果文件
for row in data: # 一次循环,row代表一行,row以元组的形式显示。
result = {} # 定义Python 字典
result[column_list[0]] = row[0] # 将row中的每个元素,追加到字典中。
result[column_list[1]] = str(row[1]) # Python字段格式 和json字段格式转换
result[column_list[2]] = str(row[2])
result[column_list[3]] = row[3]
result[column_list[4]] = str(row[4])
jsondata=json.dumps(result,ensure_ascii=False) # Python的dict --转换成----> json的object
f.write(jsondata + '\n') # 写入文件
f.close()
------脚本完结---------------------------
json文件内容:
------显示结果---------------------------
注意:最后输出结果,列的顺序是随机的。
如果想要顺序输出:1.字段起别名,比如:1_xx,2_xx,3_xx.....然后在在json.dumps中利用:sort_keys=True排序,结果就顺序输出。
>>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
{"a": 0, "b": 0, "c": 0}
第二部分:json格式--->sql语句
------脚本内容------jsontosql.py--------------
#!/usr/bin/env python
#-*- coding: utf8 -*-
import MySQLdb
import json
datalist = [] # python 列表
with open('/data/scripts/logdb/json.txt','r') as f:
for line in f: # 读取json文件中的行(也就是json的object)
datalist.append(json.
loads(line))
# 将json的object转成 Python的dict,追加到Python 列表中, 结果都是unicode格式:[{},{},{},{},{}]
for dict in datalist:
print dict # 打印显示 转换后的结果
for dict in datalist:
dict[u'LOCAL'] = dict[u'LOCAL'].replace('\r\n','\\r\\n').replace("'s","\\'s") # 将字段中的特殊:回车换行以及's 转换,方便形成sql语句
sql = "insert into db1.s1 (mobile,NAME,LOCAL,CreateTime,id) values('%s','%s','%s','%s','%s');" % (dict[u'mobile'],dict[u'NAME'],dict[u'LOCAL'],str(dict[u'CreateTime']),dict[u'id'])
print sql
-----脚本结果------
-------------------
SQL数据--->json数据
#!/usr/bin/env python
#-*- coding: utf8 -*-
import MySQLdb
import json
# 定义查询SQL语句
sql = "SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;"
# 设置列的别名或者直接用表字段名:(下面的sql含有别名)
# sql="SELECT s.id AS 1_id,s.name AS 2_na,s.local AS 3_lo,s.mobile AS 4_mo,s.CreateTime AS 5_ct FROM db1.s1 s;"
# 定义连接MySQL的登录信息(此处以字典形式)
Loginfo = {'USER':'admin', 'PSWD':'admin', 'HOST':'10.10.60.108', 'PORT':4001}
# Python 连接MySQL
conn=MySQLdb.connect(host=Loginfo['HOST'],user=Loginfo['USER'],passwd=Loginfo['PSWD'],port=Loginfo['PORT'],charset='utf8')
cur=conn.cursor()
cur.execute(sql) # 执行SQL查询
data = cur.fetchall() # 查询结果给data。如果执行:print data 显示结果:((第一行内容),(第二行内容),(第三行内容),(第四行内容))
fields = cur.description # 获取查询结果中列的字段名,如果查询SQL中使用别名,此处显示别名。
cur.close()
conn.close()
# Main
column_list = [] # 定义字段名的列表
for i in fields:
column_list.append(i[0]) # 提取字段名,追加到列表中
#print column_list # 列表显示结果:['id', 'NAME', 'LOCAL', 'mobile', 'CreateTime']
with open('/data/scripts/logdb/json.txt','w+') as f: # 打开输出结果文件
for row in data: # 一次循环,row代表一行,row以元组的形式显示。
result = {} # 定义Python 字典
result[column_list[0]] = row[0] # 将row中的每个元素,追加到字典中。
result[column_list[1]] = str(row[1]) # Python字段格式 和json字段格式转换
result[column_list[2]] = str(row[2])
result[column_list[3]] = row[3]
result[column_list[4]] = str(row[4])
jsondata=json.dumps(result,ensure_ascii=False) # Python的dict --转换成----> json的object
f.write(jsondata + '\n') # 写入文件
f.close()
注意:最后输出结果,列的顺序是随机的。
如果想要顺序输出:1.字段起别名,比如:1_xx,2_xx,3_xx.....然后在在json.dumps中利用:sort_keys=True排序,结果就顺序输出。
print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
{"a": 0, "b": 0, "c": 0}
json格式--->sql语句
#!/usr/bin/env python
#-*- coding: utf8 -*-
import MySQLdb
import json
datalist = [] # python 列表
with open('/data/scripts/logdb/json.txt','r') as f:
for line in f: # 读取json文件中的行(也就是json的object)
datalist.append(json.loads(line)) # 将json的object转成 Python的dict,追加到Python 列表中, 结果都是unicode格式:[{},{},{},{},{}]
for dict in datalist:
print dict # 打印显示 转换后的结果
for dict in datalist:
dict[u'LOCAL'] = dict[u'LOCAL'].replace('\r\n','\\r\\n').replace("'s","\\'s") # 将字段中的特殊:回车换行以及's 转换,方便形成sql语句
sql = "insert into db1.s1 (mobile,NAME,LOCAL,CreateTime,id) values('%s','%s','%s','%s','%s');" % (dict[u'mobile'],dict[u'NAME'],dict[u'LOCAL'],str(dict[u'CreateTime']),dict[u'id'])
print sql
Python mysql表数据和json格式的相互转换功能: 1.Python 脚本将mysql表数据转换成json格式 2.Python 脚本将json数据转成SQL插入数据库表数据:SQL查询:SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;第一部分:SQL数据--->json数据---...
MonogDB转MySQL数据库转换器
此转换器从给定的链接获取JSON数据,并将该JSON数据转换为localhost中MySQL数据库。
MySQL
Python3
PyMySQL的
在config.ini文件中输入MySQL凭据。
运行json_to_mysql.py并输入要使用的数据库名称或创建数据库。
这个怎么运作
get_data.py
从代码中的给定链接获取json格式数据。 您可以在get_data.py中输入链接。
create_mysql_tables.py
该文件包含执行不同SQL查询(例如创建数据库,表和插入数据)的不同功能。 通常,这是json_to_mysql.py使用的实用程序文件
json_to_mysql.py
这是主/驱动程序文件。 该文件从get_data.py中获取json格式的数据,然后将其保存到MySQL数据库中。
由于产品运营部需要采用第三方个推平台,来推送消息。如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可。
本文将涉及到如何使用Python访问Mysql数据库及读取获取数据(前提需要安装MySQLdb第三方库哦),以及如何将数据转换为json数据,最后保存成文件输出。
代码如下:注释比较详细了。
import json,MySQLdb
def TableToJson():
#1-7:如何使用python DB AP
在做一个自动打卡的玩意。登录会得到那个平台一系列的信息。我又不想专门修改、增加数据库字段来存放,所有打算直接将返回的JSON数据保存到一个MySQL字段中。
内容肯定不能直接放,考虑下比如数据注入的问题,对吧,容易出问题,所有我是打算将JSON数据转为base64编码的格式。
先写一个专门的编码工具函数
def Base64_encode(s):
res = str(base6...
导入pymysql模块: import pymysql
创建连接对象:conn = pymysql.connect(host, user, password, database)
创建游标对象:cursor = conn.cursor()
使用cursor.execute()方法执行sql语句
使用cursor.executemany...
一、实现效果
json数据转移前
{“rejectedOrderType”:2,“productCode”:null,“time1”:null,“time2”:null} 这种格式无法直接存入数据库
转义后类似于:
"data={\"pageIndex\":1,\"pageSize\":10,.
JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。
MySQL 8.0版本中增加了对JSON类型的索引支持。可以使用CREATE INDEX语句创建JSON类型的索引,提高JSON类型数据的查询效率。
存储JSON文档所需的空间与存储LONGBLOB或LONGTEXT所需的空间大致相同。
在MySQL 8.0.13之前,JSON列不能有非空的默认值。
JSON 类型比较适合存储一些列不固定、修改较少
mysql> CREATE INDEX idx1 ON user (card_pay_data(10));
ERROR 3152 (42000): JSON column 'card_pay_data' cannot be used in key specification.
2.text类型
答案是可以的,但是需要指定长度
mysql> CREATE INDEX idx2 ON user (tests);
ERROR
你可以使用Python中的`mysql.connector`库来连接MySQL数据库,并使用`json`模块将提取的数据转换为JSON格式。以下是一个简单的示例代码:
```python
import mysql.connector
import json
# 连接到MySQL数据库
cnx = mysql.connector.connect(user='your_user', password='your_password',
host='your_host', database='your_database')
# 创建游标对象
cursor = cnx.cursor()
# 执行SQL查询
query = "SELECT * FROM your_table"
cursor.execute(query)
# 获取查询结果
rows = cursor.fetchall()
# 关闭游标和数据库连接
cursor.close()
cnx.close()
# 将查询结果转换为JSON格式
data = []
for row in rows:
# 将每行数据转换为字典格式
row_data = dict(zip(cursor.column_names, row))
data.append(row_data)
# 将数据保存为JSON文件
with open('data.json', 'w') as f:
json.dump(data, f)
在上述代码中,你需要替换`your_user`、`your_password`、`your_host`、`your_database`和`your_table`为你自己的数据库信息。执行完代码后,你将得到一个名为`data.json`的JSON文件,其中包含了从数据库中提取的数据。