naver/sqlova

dbengine

Opened this issue ยท 5 comments

python3 train.py --seed 1 --bS 16 --accumulate_gradients 2 --bert_type_abb uS --fine_tune --lr 0.001 --lr_bert 0.00001 --max_seq_leng 222 --do_train
BERT-type: uncased_L-12_H-768_A-12
Batch_size = 32
BERT parameters:
learning rate: 1e-05
Fine-tune BERT: True
vocab size: 30522
hidden_size: 768
num_hidden_layer: 12
num_attention_heads: 12
hidden_act: gelu
intermediate_size: 3072
hidden_dropout_prob: 0.1
attention_probs_dropout_prob: 0.1
max_position_embeddings: 512
type_vocab_size: 2
initializer_range: 0.02
Load pre-trained parameters.
Seq-to-SQL: the number of final BERT layers to be used: 2
Seq-to-SQL: the size of hidden dimension = 100
Seq-to-SQL: LSTM encoding layer size = 2
Seq-to-SQL: dropout rate = 0.3
Seq-to-SQL: learning rate = 0.001
C:\Users\omkar waghmare\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\torch\nn\functional.py:1709: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.
warnings.warn("nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.")
Traceback (most recent call last):
File "train.py", line 684, in
acc_train, aux_out_train = train(train_loader,
File "train.py", line 319, in train
cnt_x1_list, g_ans, pr_ans = get_cnt_x_list(engine, tb, g_sc, g_sa, sql_i, pr_sc, pr_sa, pr_sql_i)
File "D:\Northeastern courses\CS 6120\project\sqlova\sqlova\utils\utils_wikisql.py", line 1652, in get_cnt_x_list
g_ans1 = engine.execute(tb[b]['id'], g_sc[b], g_sa[b], g_sql_i[b]['conds'])
File "D:\Northeastern courses\CS 6120\project\sqlova\sqlnet\dbengine.py", line 29, in execute
table_info = self.db.query('SELECT sql from sqlite_master WHERE tbl_name = :name', name=table_id).all()[0].sql.replace('\n','')
File "C:\Users\omkar waghmare\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\records.py", line 61, in getattr
return self[key]
File "C:\Users\omkar waghmare\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\records.py", line 54, in getitem
i = self.keys().index(key)
AttributeError: 'RMKeyView' object has no attribute 'index'

i've already installed records 0.5.2

https://www.gitmemory.com/issue/kenreitz42/records/208/805342147
appaprently it can be solved using sqlalchemy 1.3, but that causes the time error.

I had the same issue when running evaluate_ws.py, and it was solved by installing sqlalchemy 1.3

I am working on SQLAlchemy==1.4.15 and records==0.5.3
Since the RMKeyView is no longer works as list type, it has no attribute like index and count. So typecast the RMKeyView object as list when calling self.keys() at Record.__getitem__ function in records.py file.

Maybe you might reinstall the records package with https://github.com/simonjisu/records.git
Not tested yet in sqlova code, but tested like following:

from sqlalchemy.exc import ResourceClosedError, OperationalError

sql = """CREATE TABLE contacts (contact_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, phone TEXT NOT NULL UNIQUE)"""

db = records.Database(f"sqlite:///test.db")
try:
    db.query(sql)
except ResourceClosedError:
    print("Created")
except OperationalError:
    print("table already created")

res = db.query("SELECT sql FROM sqlite_master WHERE tbl_name = 'contacts';").all()[0].sql
res

Result:

'CREATE TABLE contacts (contact_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, phone TEXT NOT NULL UNIQUE)'

I just used as_dict() method, like this

db.query("SELECT sql FROM sqlite_master WHERE tbl_name = 'contacts';").all()[0].as_dict()['sql']

use SQLAlchemy version 1.3.18. The time error is fixed here.