无法使用sqlalchemy访问Oracle数据库
Can't access Oracle database using sqlalchemy
我知道这个问题已被问过好几次 - 特别是在 中,但我没有设法解决我的问题。下面的两个片段都安装了 cx_Oracle 和 sqlalchemy
import cx_Oracle
from sqlachemy import create_engine
我正在尝试 connect/write 一个 pandas 数据框到 Oracle 数据库。我已经设法使用以下代码片段写入数据库:
ora_con = cx_Oracle.connect("{}/{}@{}".format(schema_name, password, name_of_service))
cur = ora_con.cursor()
statement='CREATE TABLE '+schema_Name+'.History (Name VARCHAR2(15), Entity VARCHAR2(15), Status VARCHAR2(25), Type VARCHAR2(25), Owner VARCHAR2(15), User_521 VARCHAR2(15), Manufacturer VARCHAR2(15), Model VARCHAR2(15), FusInv_Last_inventory DATE, Serial_Number VARCHAR2(25), ID VARCHAR2(15), Version_of_OS VARCHAR2(15), OS VARCHAR2(15), Date_of_Report DATE)'
cur.execute(statement)
行得通。
当我尝试时:
con_str = """oracle+cx_oracle://schema_name:password@Host_address:port/?service_name=name_of_service"""
engine = create_engine(con_str, echo=False)
pandasDataframe.to_sql('History', engine , index = False) # Insert the values from the INSERT QUERY into the table 'History'
pandas .to_sql 命令失败并出现 cx_Oracle 错误:
cx_Oracle.DatabaseError: ORA-12569: TNS:packet 校验和失败
谷歌搜索错误表示网络错误(网络正常)或侦听器错误(端口号,但也可以)
我可以在 SQL Developer 中连接、写入和读取数据库。
有什么想法吗?提前致谢...
您的普通 cx_Oracle 连接字符串与 sqlalchemy 的连接字符串不同。请注意,sqlalchemy 使用 cx_Oracle.makedsn()
。因此,如果您使用纯 cx_Oracle:
连接语法
cx_Oracle.connect('myuser/mypassword@myhost:myport/myservice')
对于 sqlalchemy,您需要以下语法:
con_str = 'oracle+cx_oracle://myuser:mypassword@myhost:myport/?service_name=myservice'
我知道这个问题已被问过好几次 - 特别是在
import cx_Oracle
from sqlachemy import create_engine
我正在尝试 connect/write 一个 pandas 数据框到 Oracle 数据库。我已经设法使用以下代码片段写入数据库:
ora_con = cx_Oracle.connect("{}/{}@{}".format(schema_name, password, name_of_service))
cur = ora_con.cursor()
statement='CREATE TABLE '+schema_Name+'.History (Name VARCHAR2(15), Entity VARCHAR2(15), Status VARCHAR2(25), Type VARCHAR2(25), Owner VARCHAR2(15), User_521 VARCHAR2(15), Manufacturer VARCHAR2(15), Model VARCHAR2(15), FusInv_Last_inventory DATE, Serial_Number VARCHAR2(25), ID VARCHAR2(15), Version_of_OS VARCHAR2(15), OS VARCHAR2(15), Date_of_Report DATE)'
cur.execute(statement)
行得通。
当我尝试时:
con_str = """oracle+cx_oracle://schema_name:password@Host_address:port/?service_name=name_of_service"""
engine = create_engine(con_str, echo=False)
pandasDataframe.to_sql('History', engine , index = False) # Insert the values from the INSERT QUERY into the table 'History'
pandas .to_sql 命令失败并出现 cx_Oracle 错误: cx_Oracle.DatabaseError: ORA-12569: TNS:packet 校验和失败
谷歌搜索错误表示网络错误(网络正常)或侦听器错误(端口号,但也可以)
我可以在 SQL Developer 中连接、写入和读取数据库。
有什么想法吗?提前致谢...
您的普通 cx_Oracle 连接字符串与 sqlalchemy 的连接字符串不同。请注意,sqlalchemy 使用 cx_Oracle.makedsn()
。因此,如果您使用纯 cx_Oracle:
cx_Oracle.connect('myuser/mypassword@myhost:myport/myservice')
对于 sqlalchemy,您需要以下语法:
con_str = 'oracle+cx_oracle://myuser:mypassword@myhost:myport/?service_name=myservice'