

# 状況

`foo`という名前のデータベースが作成したいです。  
そこで、以下のスクリプトを実行しました。

# 実行スクリプト

[code]

    import mysql.connector
    
    self.conn = mysql.connector.connect(
                    user=XXXX,
                    password=XXXX,
                    host=XXXX
                )
    self.cur = self.conn.cursor()
    
    database='foo'
    query = 'CREATE DATABASE `%s`;'
    cur.execute(query, (database,))
    
[/code]

# 結果

しかし、スクリプトを実行すると`'foo'`という名前のデータベースが作成されてしまいます。  
executeメソッドによって`%s`に変数`database`が代入される際、意図せぬ`'`で文字列が囲まれてしまっているようです。

# 疑問

  1. なぜ作成されるデータベース名が意図せぬ`'`で囲まれてしまうのか？
  2. `'`で囲まれる現象を回避できるのか？


CC BY-SA 4.0
2021-10-26T08:00:53.783
83272
2021-10-26T08:19:13.363
2021-10-26T08:19:13.363
9616
9616
question
python mysql
python mysql.connector execute() "%s"に文字列を渡すと余計な ' で囲まれる問題