我正在使用SQLalchemy作为Python项目,我希望有一个整洁的连接字符串来访问我的数据库.例如:
engine = create_engine('postgres://user:pass@host/database')
Run Code Online (Sandbox Code Playgroud)
问题是我的密码包含一系列特殊字符,在我尝试连接时会被解释为分隔符.
我意识到我可以创建一个对象然后传递我的凭据,如下所示:
drivername = 'postgres',
username = 'user',
password = 'pass',
host = 'host',
database = 'database'
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话,我宁愿使用连接字符串.
所以要清楚,是否可以编码我的连接字符串或连接字符串的密码部分 - 以便可以正确解析它?
我正在尝试通过Flask-SQLAlchemy连接到本地MSSQL DB.
这是我__init__.py文件的代码摘录:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://HARRISONS-THINK/LendApp'
db = SQLAlchemy(app)
SQLALCHEMY_TRACK_MODIFICATIONS = False
Run Code Online (Sandbox Code Playgroud)
正如您在SQL Server Management Studio中看到的,此信息似乎匹配:
这是在我的models.py文件中创建一个简单的表:
from LendApp import db
class Transaction(db.model):
transactionID = db.Column(db.Integer, primary_key=True)
amount = db.Column(db.Integer)
sender = db.Column(db.String(80))
receiver = db.Column(db.String(80))
def __repr__(self):
return 'Transaction ID: {}'.format(self.transactionID)
Run Code Online (Sandbox Code Playgroud)
然后,我通过执行这两行,使用Pycharm中的Python控制台连接到数据库:
>>> from LendApp import db
>>> db.create_all()
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:
DBAPIError: (pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no …Run Code Online (Sandbox Code Playgroud)