Записать фрейм данных Python в Oracle - PullRequest
0 голосов
/ 08 июня 2018

У меня есть фрейм данных testdata, например: enter image description here Вот типы переменных в Python:

detectorid:int64
starttime:str
volume:float64
speed:float64
occupancy:float64

Теперь я хочу создать таблицу данных в oracle ивставьте в него этот фрейм данных, вот что я попробовал:

import pandas as pd
import cx_Oracle
host = "192.168.1.100"    
port = "1521"    
sid = "orcl"  
dsn = cx_Oracle.makedsn(host, port, sid)
conn = cx_Oracle.connect("scott", "tiger", dsn)
cursor = conn.cursor()

#creat datatable:
sql_creat = "create table portland(detectorid number(32), starttime varchar(32), volume number(32), speed number(32), occupancy number(32))"
cursor.execute(sql_creat)

query = "insert into portland (detectorid,starttime,volume,speed,occupancy) VALUES (%d,'%s',%f,%f,%f)"
#insert by rows:
for i in range(len(testdata)):
        detectorid= testdata.ix[i,0]
        starttime= testdata.ix[i,1]
        volume= testdata.ix[i,2]
        speed= testdata.ix[i,3]
        occupancy= testdata.ix[i,4]
        cursor.execute(query % (detectorid,starttime,volume,speed,occupancy))

conn.commit()
cursor.close()
conn.close()

Однако он дает мне DatabaseError: ORA-00984:column not allowed here.Я думаю, что что-то не так с типами столбцов в моем выражении sql, но я не знаю, как это решить.Может ли кто-нибудь дать мне несколько инструкций?Спасибо за внимание!

1 Ответ

0 голосов
/ 08 июня 2018
#!/usr/local/bin/python3

import cx_Oracle
import os

conn = cx_Oracle.connect("user", "xxx", "localhost:1512/ORCLPDB1", encoding="UTF-8")
cursor = conn.cursor()

#creat datatable:
sql_creat = "create table portland(detectorid number(32), starttime varchar(32), volume number(32), speed number(32), occupancy number(32))"
#cursor.execute(sql_creat)

query = "insert into portland (detectorid,starttime,volume,speed,occupancy) VALUES (%d,'%s',%f,%f,%f)"
detectorid = 1345
starttime = '2011-09-15 00:00:00'
volume = 0
speed = 0
occupancy= 0
cursor.execute(query % (detectorid,starttime,volume,speed,occupancy))

conn.commit()
cursor.close()
conn.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...