Python Can';我搞不懂数据库URI Postgres Azure
我最近在Azure上建立了一个Postgres数据库,我在计算我的DB URI时遇到了很多麻烦。这些信条看起来像: 服务器:name.postgres.database.azure.com 用户(管理员角色):admin@name 密码:mypassword 数据库名称:postgres 所以我尝试使用Python Can';我搞不懂数据库URI Postgres Azure,python,database,postgresql,azure,Python,Database,Postgresql,Azure,我最近在Azure上建立了一个Postgres数据库,我在计算我的DB URI时遇到了很多麻烦。这些信条看起来像: 服务器:name.postgres.database.azure.com 用户(管理员角色):admin@name 密码:mypassword 数据库名称:postgres 所以我尝试使用psql并传入连接字符串psqlpostgresql://admin@姓名:mypassword@name.postgres.database.azure.com:5432/postgres 但这
psql
并传入连接字符串psqlpostgresql://admin@姓名:mypassword@name.postgres.database.azure.com:5432/postgres
但这给了我一个错误
psql:无法将主机名“name”转换为地址:nodename或
提供了servname,或未知
有趣的是,这是有效的:
psql-h name.postgres.database.azure.com-p5432-Uadmin@name博士后
我问这个问题的原因是因为我想使用Python和sqlalchemy,并想传入DB uri字符串。根据我的经验,使用连接url作为
psql
的连接字符串的错误是由使用贪婪模式算法的psql
连接字符串解析器造成的
根据psql连接字符串的小节,user
参数关键字定义如下
使用者
连接为的PostgreSQL用户名。默认值与运行应用程序的用户的操作系统名称相同
用户
命名需要匹配正则表达式
通过NAME\u REGEX
配置变量进行配置,如下所示,请参阅文档了解详细信息
NAME_REGEX
用户和组名将根据此常规项进行检查
表示如果名称与此regexp不匹配,则用户和
拒绝在adduser中创建组,除非启用--force badname
设置设置--force badname时,只执行弱检查。
默认值为最保守的^[a-z][a-z0-9]*$
因此Azure上的postgres用户名不是标准的类Unix名称,它与Azure用户命名模式相匹配username@servname
用于Azure服务,如Azure应用程序服务的FTP、Azure SQL数据库和Azure上的Postgres等
上述原因导致Azure postgres连接url与
psql
工具不兼容,但不要担心将Python与psycopg2
一起使用,您可以参考官方教程了解它。好的,至少对我来说,这是可行的。在此处发布,以防其他人遇到相同问题
psql
,以下内容适用于我:
psql“dbname=postgres host=name.postgres.database.azure.com用户=admin@name密码=密码端口=5432“您还可以按照此处的说明解析URL:注意,在与psql连接方面,按照此处的文档:,我实际上能够使用以下方式进行连接:
psql“dbname=dbhere host=hosthere user=userhere password=pwhere port=5432”
。但是,是的,谢谢你链接到Azure官方教程,关于使用postgresI连接python,我在通过sqlalchemy连接时遇到了问题。我可以通过psycopg2进行连接,我想..@Vincent你能为通过sqlalchemy进行连接的问题发布一个新的线程吗?