質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

5472閲覧

pythonからpostgresSQL呼び出しての変数を利用したテーブル作成

hotty4782

総合スコア27

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2016/08/29 11:35

###前提・実現したいこと
pythonからpostgresSQLを呼び出し、
変数で定義されたテーブルを作成したい

###発生している問題・エラーメッセージ

psycopg2.ProgrammingError:"'TEST_TABLE'"またはその近辺で構文エラー
LINE1:CREATE TABLE 'TEST_TABLE' (filename varchar, data1 varchar, ...

というエラーが出ました。
シングルクォートがあることが問題みたいなのですが、
そもそもテーブル作成に変数名を使う事は不可能なのでしょうか。

または、変数名からシングルクォートを取る方法があればご教授お願いします。

###該当のソースコード

conn = psycopg2.connect("dbname=postgres host=localhost user=postgres password=test") cur = conn.cursor() tablename = 'TEST_TABLE' cur.execute("CREATE TABLE %s (filename varchar, data1 varchar, data2 varchar);", (tablename,))

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
pythonのversionは3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLにおいて、プリペアードステートメントで設定できるのは値の部分で、識別子(テーブル名、列名など)を指定することはできません。

この場合は、Python側で文字列フォーマットを完成させてしまえば良いと思います。

lang

1tablename = "TEST_TABLE" 2sql = "CREATE TABLE %s (filename varchar, data1 varchar, data2 varchar);" % tablename 3cur.execute(sql)

投稿2016/08/29 12:18

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hotty4782

2016/08/30 09:24

ご回答ありがとうございます。無事に解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問