Вставьте pandas кадр данных в таблицу базы данных actian PSQL, используя python - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу импортировать данные из файла "save.csv" в мою таблицу базы данных actian PSQL "new_table", но я получил ошибку

ProgrammingError: ('42000', "[42000] [PSQL][ODBC Client Interface][LNA][PSQL][SQL Engine]Syntax Error: INSERT INTO 'new_table'<< ??? >> ('name','address','city') VALUES (%s,%s,%s) (0) (SQLPrepare)")

Ниже мой код:

   connection = 'Driver={Pervasive ODBC Interface};server=localhost;DBQ=DEMODATA'
   db = pyodbc.connect(connection)
   c=db.cursor()
    #create table i.e new_table

    csv = pd.read_csv(r"C:\Users\user\Desktop\save.csv")
    for row in csv.iterrows():
        insert_command = """INSERT INTO new_table(name,address,city) VALUES (row['name'],row['address'],row['city'])"""
        c.execute(insert_command)
        c.commit()




Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Я пробовал то же самое, в моем случае таблица создана, я просто хочу вставить каждую строку из pandas dataframe в базу данных, используя Actian PSQL

0 голосов
/ 05 февраля 2020

Pandas имеет встроенную функцию, которая очищает pandas -данных в базу данных sql с именем pd.to_ sql () . Это может быть то, что вы ищете. При этом вам не нужно вручную вставлять по одной строке за раз, но вы можете вставить весь фрейм данных сразу.

Если вы хотите продолжать использовать свой метод, проблема может заключаться в том, что таблица "new_table" hasn ' не был создан еще в базе данных. И поэтому вам сначала нужно что-то вроде этого:

CREATE TABLE new_table 
( 
Name [nvarchar](100) NULL, 
Address [nvarchar](100) NULL, 
City [nvarchar](100) NULL
)

РЕДАКТИРОВАТЬ: Вы можете использовать to_ sql (), как это для таблиц, которые уже существуют в базе данных:

df.to_sql(
        "new_table",
        schema="name_of_the_schema",
        con=c.session.connection(),
        if_exists="append", # <--- This will append an already existing table
        chunksize=10000,
        index=False,
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...