亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

postgres上的Sql alchemy報價數據庫綁定參數

postgres上的Sql alchemy報價數據庫綁定參數

慕斯王 2022-06-14 17:11:39
我是 sql 煉金術的新手。我有一個 postgres 本地服務器,我想使用 sql alchemy 創建一個數據庫。我有以下代碼:connection = engine.connect()connection.execute(    text("CREATE DATABASE :database_name").bindparams(bindparam('database_name', quote=False)),    database_name="test_db")但不幸的是,這對數據庫名稱參數進行了單引號,這在 postgres 中不起作用。來自 sql alchemy 的日志:[SQL: CREATE DATABASE %(database_name)s][parameters: {'database_name': 'test_db'}]sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "'test_db'" LINE 1: CREATE DATABASE 'test_db`'在 postgres 日志中,它執行以下語句,由于單引號,該語句無效。一個有效的應該有雙引號:CREATE DATABASE 'test_db'有沒有辦法在結果語句中不引用綁定參數?我不想自己進行參數引用和字符串創建,因為我認為這種抽象應該由 sql alchemy 處理 - 以防我更改我的底層數據庫引擎,例如,這看起來是 sql alchemy 促進避免 sql 的機制也注射。同樣的問題也適用于其他 postgres 語句,例如使用密碼創建用戶或授予現有用戶權限,所有這些都需要引用 postgres 特定的引用。
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

除了、或之外SELECT,您不能在語句中使用參數。INSERTUPDATEDELETE


您必須將CREATE DATABASE語句構造為包含數據庫名稱的字符串。就像是


from psycopg2 import sql


cursor.execute(

    sql.SQL("CREATE DATABASE {}").format(sql.Identifier('test_db'))

)


查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號