sqlalchemy - 从 psycopg 连接创建 sqlalchemy 引擎
问题描述
我正在尝试engine
使用现有的 psycopg2创建一个 sqlalchemy connection
。
我的第一种方法是尝试从 psycopg2 连接中提取数据库 URI,但由于安全原因,这失败了:
调用connection.dsn
会打印生成连接字符串所需的所有内容,但密码会被混淆:
print(connection.dsn)
用户=my_user 密码=xxx dbname=my_db 主机=localhost 端口=5432
同样,调用connection.get_dsn_parameters()
返回一个没有密码的字典。
print(connection.get_dsn_parameters())
{'user':'my_user','dbname':'my_db','host':'localhost','port':'5432','tty':'','options':'','sslmode' :'首选','sslcompression':'0','krbsrvname':'***','target_session_attrs':'任何'}
我还看到,如果我有一个连接池,我可以按照这个 SO answer的方法,但我只有连接。
我想过伪造一个创建者函数,但我很确定如果 sqlalchemy 在内部关闭我的一个连接,这可能会适得其反:
# connection exists in the scope
def get_conn():
return connection
create_engine('postgresql+psycopg2://', creator=get_conn)
有任何想法吗?
解决方案
推荐阅读
- python - pdblp 中 bdh() 的字段覆盖
- python - 列关闭事件.id 不存在第 1 行:选择“关闭事件”。“id”,“关闭事件”。“所有者”,“关闭
- nginx - 如何使用 Nginx 使用通配符重定向某些路径?
- c++ - 我做错了什么?GetDiskFreeSpaceExA 的功能根本不起作用
- optaplanner - OptaPlanner-如何实现服务功能链(SFC)?
- vba - 用各种标准划界
- android - Android 中的 OpenCV
- sql - SQL 检查子实体中具有特定特征的记录(1 到 n)
- android - 如何从 PendingIntent 安全地取消当前警报?
- ms-access - 有没有办法控制计算表单和子表单上的计算控件的顺序?