【问题标题】:Passing a JSON Extract from a rest api to a SQL Server in python将来自rest api的JSON提取传递给python中的SQL Server
【发布时间】:2020-01-18 02:58:03
【问题描述】:

我对 py 编程很陌生;如果这是一个愚蠢的问题,请原谅。

我需要执行两个操作

  1. 从 Rest API 中提取 json 文件(这将有大量的键/值对)

  2. 以表格格式将数据提取传递给 SQL Server

我编写了一个示例函数,其中仅包含 03 个参数,这些参数被传递到我系统上的 SQL Server。

如果存在未知数量的参数,例如 json 提取,此函数将如何变化?

def InsertJsonsql(Name, City, Age):
    connection = pyodbc.connect('Driver={SQL Server};'
                                'Server=IN2367403W1\SQLEXPRESS;' #IN2367403W1\SQLEXPRESS : use server name 
                                'Database=TestDB;'
                                'Trusted_Connection=yes;')

cursor = connection.cursor()

json_insert_query = """
                        INSERT INTO TestDB.dbo.Person (Name, City, Age) VALUES ('{}', '{}', '{}') 
                    """.format(Name, City, Age)


cursor.execute(json_insert_query)
connection.commit()
print("Record inserted successfully into Person table")

【问题讨论】:

  • 您似乎在使用关系数据库。在这样的数据库中,制作表格时参数的大小是固定的。如果你想输入未知数量的 JSON,你可以使用 NoSQL。

标签: python json sql-server


【解决方案1】:

正如 cmets 中的 @shimo 所述,mysql 或 Windows SQL 等关系数据库在创建时是固定的。所以你不能添加新列来处理未知数量的参数。

据我所知,您有两种选择:

1.) 使用像 MongoDB 这样的 NoSQL 数据库。那里的数据保存为 JSON,因此它可以处理任意数量的键值对。这是最安全、最好的方法。

2.) 如果您必须使用关系数据库,您可能必须在表中创建一个可以处理长字符串的列,并将您的数据保存为该列中的 JSON 字符串。这不是一个好的解决方案,您应该使用 NoSQL 数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2021-12-31
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多