当我尝试运行代码时出现此错误。
我在网站上搜索了这个问题
但它无法解决我的问题。
当我尝试使用我的用户名(TCOYUKSEL)创建超级用户时,它会使用“tcoyuksel”创建另一个超级用户
ozgur.py 第 9 行 db = psycopg2.connect("dbname=news")
ozgur.py 第 73 行get_pop_articles(), str("views"))
init .py 第 130 行 conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
--我没有对这个文件做任何事情 --
角色名称区分大小写,但随着您的查询,它会被转换为小写tcoyuksel
,
CREATE ROLE TCOYUKSEL superuser;\nALTER ROLE TCOYUKSEL WITH LOGIN;\n
Run Code Online (Sandbox Code Playgroud)\n\n因为关键字和不带引号的标识符不区分大小写(4.1.1.标识符和关键字)。
\n\n\n\n\n还有第二种标识符:分隔标识符或带引号的标识符。它是通过用双引号 ( ) 括起任意\n 个字符序列而形成的
\n"
。分隔标识符始终是标识符,而不是关键字。So"select"
可用于引用名为 \xe2\x80\x9cselect
\xe2\x80\x9d 的列或表,而未加引号的 select 将被\n 视为关键字,因此在以下情况下会引发解析错误:\n在需要表名或列名的地方使用。
您需要使用引号来绕过规范化,即用作TCOYUKSEL
分隔标识符:
CREATE ROLE "TCOYUKSEL" superuser;\nALTER ROLE "TCOYUKSEL" WITH LOGIN;\n
Run Code Online (Sandbox Code Playgroud)\n\n如果直接从命令行运行它,则需要加倍引号:
\n\npostgres "CREATE ROLE ""TCOYUKSEL"" superuser; ALTER ROLE ""TCOYUKSEL"" WITH LOGIN;"\n
Run Code Online (Sandbox Code Playgroud)\n