- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种非显式的方法来将 JSON 列表(即内部带有 {} 项的 [])解析到 sqlite 数据库中。
具体来说,我被困在我想说的地方
INSERT into MYTABLE (col 1, col2, ...) this datarow in this jsondata
我觉得应该有一种方法来抽象事物,这样上面的行就差不多了。我的数据是一个 JSON 列表,包含多个 JSON 字典。每个字典都有十几个左右的键:值对。没有嵌套。
{"object_id":3 ,"name":"rsid" ,"column_id":1
,"system_type_id":127 ,"user_type_id":127 ,"max_length":8
,"precision":19 ,"scale":0 ,"collation_name":null
,"is_nullable":false ,"is_ansi_padded":false ,"is_rowguidcol":false
,"is_identity":false ,"is_computed":false ,"is_filestream":false
,"is_replicated":false ,"is_non_sql_subscribed":false
,"is_merge_published":false ,"is_dts_replicated":false
,"is_xml_document":false ,"xml_collection_id":0
,"default_object_id":0 ,"rule_object_id":0 ,"is_sparse":false
,"is_column_set":false}
json 列表中的每个 item[{k1:v1a, k2:v2a}, {k1:v1b,k2:v2b},...]
将具有完全相同的 KEY 名称。我将这些作为我的 sqlite 数据库中的列的名称。但 VALUES 会有所不同。因此,通过将每个键/列的值放入该项目的该行来填充表格。
k1 | k2 | k3 | ... | km
v1a | v2a | v3a | ... | vma
v1b | v2b | v3b | ... | vmb
...
v1n | v2n | v3n | ... | vmn
在 SQL 中,插入语句的编写顺序不必与数据库列的顺序完全相同。这是因为您在 INSERT 声明中指定了要插入的列(以及顺序)。这对于 JSON 来说似乎是完美的,其中 JSON 列表中的每个行/项目都包含其列名(键)。因此,我想要一条语句“给定这一行 JSON,通过协调 JSON 键名称与 SQL 表列名称,将其所有数据插入 SQL 表中”。这就是我所说的不明确的意思。
import json
r3 = some data file you read and close
r4 = json.loads(r3)
# let's dump this into SQLite
import sqlite3
the_database = sqlite3.connect("sys_col_database.sqlite")
the_cursor = the_database.cursor()
row_keys = r4[0].keys()
# all of the key are below for reference. 25 total keys.
'''
'is_merge_published', 'rule_object_id', 'system_type_id',
'is_xml_document', 'user_type_id', 'is_ansi_padded',
'column_id', 'is_column_set', 'scale',
'is_dts_replicated', 'object_id', 'xml_collection_id',
'max_length', 'collation_name', 'default_object_id',
'is_rowguidcol', 'precision', 'is_computed',
'is_sparse', 'is_filestream', 'name',
'is_nullable', 'is_identity', 'is_replicated',
'is_non_sql_subscribed'
'''
sys_col_table_statement = """create table sysColumns (
is_merge_published text,
rule_object_id integer,
system_type_id integer,
is_xml_document text,
user_type_id integer,
is_ansi_padded text,
column_id integer,
is_column_set text,
scale integer,
is_dts_replicated text,
object_id integer,
xml_collection_id integer,
max_length integer,
collation_name text,
default_object_id integer,
is_rowguidcol text,
precision integer,
is_computed text,
is_sparse text,
is_filestream text,
name text,
is_nullable text,
is_identity text,
is_replicated text,
is_non_sql_subscribed text
)
"""
the_cursor.execute(sys_col_table_statement)
insert_statement = """insert into sysColumns values (
{0},{1},{2},{3},{4},
{5},{6},{7},{8},{9},
{10},{11},{12},{13},{14},
{15},{16},{17},{18},{19},
{20},{21},{22},{23},{24})""".format(*r4[0].keys())
这就是我被困住的地方。 insert_statement
是将要执行
的字符串的构造。现在我需要执行它,但向它提供 r4 中每个 JSON 项的正确数据。我不知道该怎么写。
最佳答案
这里有两个选项。我还一步加载了 JSON 数据。
#python 3.4.3
import json
import sqlite3
with open("data.json",'r') as f:
r4 = json.load(f)
the_database = sqlite3.connect("sys_col_database.sqlite")
the_cursor = the_database.cursor()
row_keys = list(r4[0].keys())
# all of the key are below for reference. 25 total keys.
'''
'is_merge_published', 'rule_object_id', 'system_type_id',
'is_xml_document', 'user_type_id', 'is_ansi_padded',
'column_id', 'is_column_set', 'scale',
'is_dts_replicated', 'object_id', 'xml_collection_id',
'max_length', 'collation_name', 'default_object_id',
'is_rowguidcol', 'precision', 'is_computed',
'is_sparse', 'is_filestream', 'name',
'is_nullable', 'is_identity', 'is_replicated',
'is_non_sql_subscribed'
'''
sys_col_table_statement = """create table sysColumns (
is_merge_published text,
rule_object_id integer,
system_type_id integer,
is_xml_document text,
user_type_id integer,
is_ansi_padded text,
column_id integer,
is_column_set text,
scale integer,
is_dts_replicated text,
object_id integer,
xml_collection_id integer,
max_length integer,
collation_name text,
default_object_id integer,
is_rowguidcol text,
precision integer,
is_computed text,
is_sparse text,
is_filestream text,
name text,
is_nullable text,
is_identity text,
is_replicated text,
is_non_sql_subscribed text
)
"""
# method 1
# create a string with the keys prepopulated
prepared_insert_statement = """insert into sysColumns (\
{0}, {1}, {2}, {3}, {4}, \
{5}, {6}, {7}, {8}, {9}, \
{10}, {11}, {12}, {13}, {14}, \
{15}, {16}, {17}, {18}, {19}, \
{20}, {21}, {22}, {23}, {24}) values (\
'{{{0}}}', '{{{1}}}', '{{{2}}}', '{{{3}}}', '{{{4}}}', \
'{{{5}}}', '{{{6}}}', '{{{7}}}', '{{{8}}}', '{{{9}}}', \
'{{{10}}}', '{{{11}}}', '{{{12}}}', '{{{13}}}', '{{{14}}}', \
'{{{15}}}', '{{{16}}}', '{{{17}}}', '{{{18}}}', '{{{19}}}', \
'{{{20}}}', '{{{21}}}', '{{{22}}}', '{{{23}}}', '{{{24}}}'\
)""".format(*r4[0].keys())
# unpack the dictionary to extract the values
insert_statement = prepared_insert_statement.format(**r4[0])
# method 2
# get the keys and values in one step
r4_0_items = list(r4[0].items())
insert_statement2 = """insert into sysColumns (\
{0[0]}, {1[0]}, {2[0]}, {3[0]}, {4[0]}, \
{5[0]}, {6[0]}, {7[0]}, {8[0]}, {9[0]}, \
{10[0]}, {11[0]}, {12[0]}, {13[0]}, {14[0]}, \
{15[0]}, {16[0]}, {17[0]}, {18[0]}, {19[0]}, \
{20[0]}, {21[0]}, {22[0]}, {23[0]}, {24[0]}) values (\
'{0[1]}', '{1[1]}', '{2[1]}', '{3[1]}', '{4[1]}', \
'{5[1]}', '{6[1]}', '{7[1]}', '{8[1]}', '{9[1]}', \
'{10[1]}', '{11[1]}', '{12[1]}', '{13[1]}', '{14[1]}', \
'{15[1]}', '{16[1]}', '{17[1]}', '{18[1]}', '{19[1]}', \
'{20[1]}', '{21[1]}', '{22[1]}', '{23[1]}', '{24[1]}'\
)""".format(*r4_0_items)
the_cursor.execute(sys_col_table_statement)
#the_cursor.execute(insert_statement)
the_cursor.execute(insert_statement2)
the_database.commit()
关于python - 使用Python将多个json项解析到SQLite数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379123/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!