python - 如何修复 SQLAlchemy 连接问题:连接到 IBM Cloud 上托管的 IBM db2 服务器时出现“需要 SQLAlchemy 格式的连接信息”
问题描述
因此,过去几天我一直在尝试连接到托管在 IBM 云上的 IBM DB2 服务器,并设法使用提供的凭据和“ibm_db”、“ibm_db_sa”和“ibm_db_dbi”模块连接到它。但是,当我导入 SQL 魔术并尝试连接到服务器时,它失败了。
我一共尝试了 3 种方法:IBM 推荐的方法,以及我在互联网上找到的其他一些方法,遗憾的是,都失败了。
方法 1(IBM 推荐):
import ibm_db
import ibm_db_sa
import sqlalchemy
from sqlalchemy import *
%load_ext sql
%sql ibm_db_sa://qcf54xxx:qz^d5stlkbr6lxxx@https://dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net:50000/BLUDB
错误:
Connection info needed in SQLAlchemy format, example:
postgresql://username:password@hostname/dbname
or an existing connection: dict_keys([])
invalid literal for int() with base 10: ''
Connection info needed in SQLAlchemy format, example:
postgresql://username:password@hostname/dbname
or an existing connection: dict_keys([])
方法二:
from sqlalchemy import create_engine
engine = create_engine('ibm_db_sa://qcf54xxx:qz^d5stlkbr6lxxx@dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net:50000/BLUDB')
错误:
Invalid Syntax
方法三:
import sqlalchemy
from sqlalchemy import *
import ibm_db_sa
db2 = sqlalchemy.create_engine('ibm_db_sa://qcf54xxx:qz^d5stlkbr6lxxx@dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net:50000/BLUDB')
metadata = MetaData()
错误:
Invalid Syntax
成功的方法(没有SQLAlchemy的方法)【仅供参考】:
import ibm_db
import ibm_db_sa
import ibm_db_dbi
import pandas
#Connects to the IBM database
dsn_hostname = "dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net" # e.g.: "dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net"
dsn_uid = "qcf54xxx" # e.g. "abc12345"
dsn_pwd = "qz^d5stlkbr6lxxx" # e.g. "7dBZ3wWt9XN6$o0J"
dsn_driver = "{IBM DB2 ODBC DRIVER}"
dsn_database = "BLUDB" # e.g. "BLUDB"
dsn_port = "50000" # e.g. "50000"
dsn_protocol = "TCPIP" # i.e. "TCPIP"
#DO NOT MODIFY THIS CELL. Just RUN it with Shift + Enter
#Create the dsn connection string
dsn = (
"DRIVER={0};"
"DATABASE={1};"
"HOSTNAME={2};"
"PORT={3};"
"PROTOCOL={4};"
"UID={5};"
"PWD={6};").format(dsn_driver, dsn_database, dsn_hostname, dsn_port, dsn_protocol, dsn_uid, dsn_pwd)
#print the connection string to check correct values are specified
print(dsn)
#DO NOT MODIFY THIS CELL. Just RUN it with Shift + Enter
#Create database connection
try:
conn = ibm_db.connect(dsn, "", "")
print ("Connected to database: ", dsn_database, "as user: ", dsn_uid, "on host: ", dsn_hostname)
except:
print ("Unable to connect: ", ibm_db.conn_errormsg() )
我希望能够使用 %sql 来操作数据库。
谢谢!
PS如果我听起来很粗鲁或以某种方式冒犯了你,请理解英语不是我的母语。:(
解决方案
我遇到了同样的问题,但随后 pip 安装了 ibm_db_sa,然后确保按上述方式导入,然后它就可以工作了。
推荐阅读
- c# - 如何让玩家在统一 2d 中停止无限跳跃
- python-3.x - Visual Studio 代码调试
- django - 保存前检查重复对象
- promise - Figma Plugin - 帮助以编程方式创建文本样式
- opengl - 无法让纹理在 Common Lisp 中的 OpenGL 中工作
- tensorflow - 如何提高对相似对象的图像分类的准确性并降低过拟合
- r - R:在图上叠加集群
- reactjs - Redux reducer:当数组没有对象数据时将对象添加到数组
- node.js - .find 不是sails js mongodb中的函数
- python - 保存以十进制计的棒球局