使用SQLAlchemy,引擎创建如下:
from sqlalchemy import create_engine
engine = create_engine("postgresql://localhost/mydb")
Run Code Online (Sandbox Code Playgroud)
engine如果数据库不存在,则访问失败.如果指定的数据库不存在,是否可以告诉SQLAlchemy创建新数据库?
我无法远程访问MySQL.我使用SSH隧道,并希望使用Python + SQLALchemy连接数据库MySQL.
当我在我的控制台中使用MySQL-client并指定" ptotocol=TCP"时,一切都很好!我用命令:
mysql -h localhost —protocol=TCP -u USER -p
Run Code Online (Sandbox Code Playgroud)
我通过SSH隧道访问远程数据库.
但是,当我想使用Python + SQLAchemy连接到数据库时,我找不到像这样的选项,—protocol=TCP
否则,我只连接到本地MySQL数据库.请告诉我,有没有办法使用SQLAlchemy来做到这一点.
我试图通过SQLAlchemy连接到MSSql服务器.这是我的代码与假凭证(显然不是我真正的凭据).
credentials = {
'username' : 'SPOTTER_xyz_ACC',
'password' : '123Goodbye2016!@#',
'host' : 'MARYLQLT01',
'database' : 'LRS_DUS',
'port' : '1560'}
connect_url = sqlalchemy.engine.url.URL(
'mssql+pyodbc',
username=credentials['username'],
password=credentials['password'],
host=credentials['host'],
port=credentials['port'],
query=dict(service_name=credentials['database']))
engine = create_engine(connect_url)
connection=engine.connect()
Run Code Online (Sandbox Code Playgroud)
这是我得到的.pyodbc错误.
(pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source
name not found and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)
但是,这是奇怪的...我如果做一个pyodbc连接并使用Pandas.read_sql,那么我可以没有错误地获取数据.所以我不明白为什么我得到'pyodbc'错误????
connection=pyodbc.connect(\
'Driver={SQL Server}; \
Server=MARYLQLT01; \
Database=LRS_DUS; \
UID=SPOTTER_xyz_ACC; \
PWD=123Goodbye2016!@#')
stmt='select * from PD_SC_All'
df=pd.read_sql(stmt,connection)
Run Code Online (Sandbox Code Playgroud)
然后我可以看到数据帧.
那么,为什么(pyodbc.Error)我尝试连接SQLAlchemy时会遇到什么?
Windows 7 …Run Code Online (Sandbox Code Playgroud) python ×4
sqlalchemy ×3
mysql ×2
database ×1
mysql-python ×1
pyodbc ×1
sql-server ×1
ssh-tunnel ×1
tcp ×1