Я пытаюсь обновить ячейку, выбранную на основе 2 функций. Одна функция выбирает строки случайным образом, а другая - случайным образом. Любое значение, которое может содержать ячейка, необходимо заменить на NULL
. В 10% строк должна быть одна ячейка NULL
.
Код выглядит следующим образом:
import random as rdm
#decide which random rows will be empty
def select_empty_rows(n,empty_rows=[]):
for i in range(math.ceil(0.1*(n+1))):
empty_rows.append(rdm.choice(range(n)))
return empty_rows
#decide which random columns will be empty
def select_empty_col(col_list=[]):
empty_col=rdm.choice(col_list)
return empty_col
#data entry
def data_entry_pkg_info(n):
query="insert into pkg_info(weight,dimensions,latitude,longitude,isPerishable,isFragile,isHazardous,isDeliverable) values(%s,%s,%s,%s,%s,%s,%s,%s)"
query2="update pkg_info set %s=NULL where pkg_id=%s"
empty_rows=[]
col_list=['weight','dimensions','latitude','longitude','isPerishable','isFragile','isHazardous','isDeliverable']
select_empty_rows(n,empty_rows)
cell=''
for i in range(n):
entry=(rdm.uniform(0.00,100.00),rdm.uniform(0.00,100.00),
rdm.uniform(-90.00000,90.00000),
rdm.uniform(-180.00000,180.00000),rdm.choice([True,False]),
rdm.choice([True,False]),rdm.choice([True,False]),
rdm.choice([True,False]))
cur.execute(query,entry)
if i in empty_rows:
cols=select_empty_col(col_list)
if cell not in cols:
entry=(rdm.uniform(0.00,100.00),rdm.uniform(0.00,100.00),
rdm.uniform(-90.00000,90.00000),
rdm.uniform(-180.00000,180.00000),rdm.choice([True,False]),
rdm.choice([True,False]),rdm.choice([True,False]),
rdm.choice([True,False]))
cur.execute(query,entry)
else:
entry=(cols,empty_rows[i])
cur.execute(query2,entry)
print(entry)
Точная ошибка выглядит следующим образом:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''isDeliverable'=NULL where pkg_id=8' at line 1
Я подозреваю, что проблема в том, что имя столбца (в данном случае isDeliverable) заключено в кавычки. Приветствуются другие возможные проблемы и решения.
Заранее всем спасибо!