Таблицы данных Python в таблицу Hana - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть мой dataframe в среде python, который я хочу перенести в Hana из среды python.Я пытаюсь сделать построчное нажатие на Hana, но этого не происходит. Однако, если есть способ отправить полный кадр данных в hana за один раз, это будет лучше.

Однако пока я не могудинамически выдвигать значения датафрейма, строка за строкой:

Вот код Python, который я пробовал, пока в лучшем случае, но, к сожалению, не работает :(:

 cursor = conn.cursor() 

 cursor.execute('CREATE TABLE DS.BM_TEXT("Var_ID" VARCHAR (255),"Start_Date" 
 varchar(255),"End_Date" varchar(255),"ID" varchar(255),"Text" varchar(255))') 

 conn = dbapi.connect(address="hana1345.lab1.abc.com", port=30015, user='SHEEMAZ', 
 password='Hello1')

 sql_insert_query = """ INSERT INTO DS.BM_TEXT VALUES (%s,%s,%s,%s,%s)"""

 insert_tuple_2 = ("2", "Emma", "2019-05-19", "9500","22")
 cursor.execute(sql_insert_query, insert_tuple_2)

Ошибка, которую я получаю,:

ProgrammingError: (257, 'синтаксическая ошибка sql: неправильный синтаксис рядом с "%": строка 1 столбец 53 (в позиции 53)')

Оценить всю помощь.

1 Ответ

0 голосов
/ 25 сентября 2019

Я не уверен, какой модуль вы используете для вашего DB API.Но обычно ? является заполнителем.Без явного вызова .format в вашей строке он может фактически не вставить ваш sql_insert_query в строку.Я могу ошибаться, но я предполагаю, что это проблема.

Что касается отправки всего сразу;это можно сделать с помощью executemany().Вам нужна итеративная структура, подобная этой:

insert_list = [("2", "Emma", "2019-05-19", "9500","22"),("3", "Smith", "2019-05-19", "9500","22")]

Чтобы отправить ее в базу данных, используйте этот запрос:

cursor.executemany("""INSERT INTO DS.BM_TEXT VALUES (?,?,?,?,?);""", insert_list)

Это поместит всю итерацию в таблицу.Я верю, что он все еще работает построчно, но делает тяжелую работу за вас.Если ваш фрейм данных не структурирован подобным образом, вы можете создать итеративный класс / функцию, который возвращает данные в этом формате из вашего df.

...