[英]Connect to Oracle database from SQLAlchemy using pyodbc
I have set up a data source name(DSN) in ODBC driver and supplying that in a query.我在 ODBC 驱动程序中设置了一个数据源名称(DSN),并在查询中提供了它。 My below code is working like a charm.
我下面的代码就像一个魅力。
import pyodbc as db
cnxn = db.connect('DSN=Oracle Prod DW;PWD=******')
I want to create a sqlalchemy connection for the same, but I fail.我想为此创建一个 sqlalchemy 连接,但我失败了。 I tried different approaches but it didn't work.
我尝试了不同的方法,但没有奏效。 I just want to supply a password and DSN.
我只想提供密码和 DSN。
Oracle dialect + ODBC Driver is not seem to be supported by SqlAlchemy Oracle方言+ ODBC 驱动似乎不被 SqlAlchemy 支持
https://docs.sqlalchemy.org/en/13/core/engines.html#oracle https://docs.sqlalchemy.org/en/13/core/engines.html#oracle
Only in Java Runtime you can do that apparently只有在 Java 运行时,您显然可以做到这一点
https://docs.sqlalchemy.org/en/13/dialects/oracle.html#module-sqlalchemy.dialects.oracle.zxjdbc https://docs.sqlalchemy.org/en/13/dialects/oracle.html#module-sqlalchemy.dialects.ZA189C633D9995E11BF860717dbjc9A4B8Z.x
https://www.jython.org/jython-old-sites/archive/21/docs/zxjdbc.html https://www.jython.org/jython-old-sites/archive/21/docs/zxjdbc.html
That being said话虽如此
If you have an oracle client installation with proper tnsnames setup如果您有一个 oracle 客户端安装和正确的tnsnames设置
You can do something like follows您可以执行以下操作
Install cx_Oracle安装 cx_Oracle
Setup tnsnames ie设置 tnsnames 即
DEVDB= (DESCRIPTION = (ADDRESS =(PROTOCOL =TCP)(HOST =10.10.10.11)(PORT =1521)) (CONNECT_DATA = (SERVER =DEDICATED) (SERVICE_NAME =SVCDEV) ) )
Code代码
import sqlalchemy as alc from sqlalchemy.orm import sessionmaker import cx_Oracle import pandas as pd conn_str = 'oracle://DEVDB' engine = alc.create_engine(conn_str, echo=False) Session = sessionmaker(bind=engine) # YOU MIGHT NEED THIS sometimes # cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\x64\product\19.0.0\client_1\bin") sess = Session() result = sess.execute("select 'foo' from dual") df = pd.DataFrame(result.fetchall(), columns=result.keys()) print(df.to_string())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.