spaceandtimelabs/SxT-Python-SDK

TypeError on INSERT DML

Closed this issue · 3 comments

using the following example from the docs:

	# DML
	# Use DML() to insert, update, delete and merge queries
	dml_data = SpaceAndTimeInit.DML("INSERT INTO ETH.TESTTABLE VALUES(5,'x5')", biscuit)

	dml_data_response = dml_data["response"]
	dml_data_error = dml_data["error"]

	print("Response: ", dml_data_response)
	print("Error: ", dml_data_error)

as a script like this:

from spaceandtimesdk import SpaceAndTimeSDK
from dotenv import load_dotenv
import json
import pprint
import os

load_dotenv()

# Initializing the Space and Time SDK for use.
SpaceAndTimeInit = SpaceAndTimeSDK()

biscuit = os.getenv("Z_BISCUIT")

query = f"INSERT INTO SE_PLAYGROUND.NFT_METADATA VALUES (9998, 9998, \"https://ipfs.moralis.io:2053/ipfs/QmNdgeo398VHvPgpLw6PddrhHfEQ7fkKj7KGbMt6wmWNNv/1998\", \"Alek_Common_1998\", \"Alek\", \"Common\")" 
print(query)

dml_data = SpaceAndTimeInit.DML(query, biscuit)

dml_data_response = dml_data["response"]
dml_data_error = dml_data["error"]

print("Response: ", dml_data_response)
print("Error: ", dml_data_error)

I get the following error:

INSERT INTO SE_PLAYGROUND.NFT_METADATA VALUES (9998, 9998, "https://ipfs.moralis.io:2053/ipfs/QmNdgeo398VHvPgpLw6PddrhHfEQ7fkKj7KGbMt6wmWNNv/1998", "Alek_Common_1998", "Alek", "Common")
Traceback (most recent call last):
  File "/Users/zakwolff/tools/SxT-Python-SDK/big-insert.py", line 18, in <module>
    dml_data = SpaceAndTimeInit.DML(query, biscuit)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: SpaceAndTimeSDK.DML() missing 1 required positional argument: 'biscuit'

looking spaceandtimesdk.py it looks like maybe the docs are missing resourceId, so I tried this:

from spaceandtimesdk import SpaceAndTimeSDK
from dotenv import load_dotenv
import os

load_dotenv()

# Initializing the Space and Time SDK for use.
SpaceAndTimeInit = SpaceAndTimeSDK()

biscuit = os.getenv("Z_BISCUIT")

query = f"INSERT INTO SE_PLAYGROUND.NFT_METADATA VALUES (9998, 9998, \"https://ipfs.moralis.io:2053/ipfs/QmNdgeo398VHvPgpLw6PddrhHfEQ7fkKj7KGbMt6wmWNNv/1998\", \"Alek_Common_1998\", \"Alek\", \"Common\")" 
print(biscuit)
print(query)

dml_data = SpaceAndTimeInit.DML("SE_PLAYGROUND.NFT_METADATA", query, biscuit)

dml_data_response = dml_data["response"]
dml_data_error = dml_data["error"]

print("Response: ", dml_data_response)
print("Error: ", dml_data_error)

Which gives this:

Response:  None
Error:  400 Client Error: Bad Request for url: https://api.spaceandtime.app/v1/sql/dml

I will DM you the biscuit so you can see that is has the correct permissions.

Adding single quotes instead of the "/" or double quotes seemed to have worked. I tried it out by creating a separate table and inserting data into it. Here's a Sample Insert statement

INSERT INTO NAMESPACE.TABLENAME VALUES (9996, 9996, 'https://ipfs.moralis.io:2053/ipfs/QmNdgeo398VHvPgpLw6PddrhHfEQ7fkKj7KGbMa6wmWNNv/1998', 'Jez_Common_1992', 'Jez', 'Rare')

Thank you, @gssakash-SxT. I think now we just need to get the docs updated include the resourceId in the function call and we can close this.