2017-12-21 16 views
0

python listを使用してカラムを動的に持つテーブルを作成したいと思います。列名はリストにあり、MySQLクエリでそれらを参照したいと思います。私はPython 3.4.3でMySQL.connectorを使用しています。mysqlのpythonコネクタを使用してテーブルとカラムを動的に作成

以下

私が試したコードです:

col names: ['Last Name', 'First Name', 'Job', 'Country'] 
table_name = 'stud_data' 
query = "CREATE TABLE IF NOT EXISTS"+table_name+"("+"VARCHAR(250),".join 
(col) + "Varchar(250))" 
print("Query is:" ,query) 
cursor.execute(query) 
conn.commit() 

しかし、私は次のエラーを取得しています:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Name VARCHAR(250),First Name VARCHAR(250),Job VARCHAR(250),Country VARCHAR(250))' at line 1 

は、クエリは次のようになります。

Query is: CREATE TABLE IF NOT EXISTS stud_data (Last Name VARCHAR(250),First Name VARCHAR(250),Job VARCHAR(250),Country VARCHAR(250)) 

に助けてくださいこの。事前に感謝します

答えて

1

あなたは列名にスペースがあります。 「FirstName」の代わりに「First Name」と入力し、スペースを削除すると問題が解決されます。 あなたは、スペースを保持したい場合は、バッククォート「`」という文字列

サンプルコードをラップするを使用します。

columns = [ ('Last Name', 'First Name', 'Job', 'Country') ] #list of tuples 

for p in columns: 
    q = """ CREATE TABLE IF NOT EXISTS stud_data (`{col1}` VARCHAR(250),`{col2}` VARCHAR(250),`{col3}` VARCHAR(250),`{col4}` VARCHAR(250)); """ 
    sql_command = q.format(col1=p[0], col2=p[1], col3=p[2], col4 = p[3]) 


>>> sql_command 
' CREATE TABLE IF NOT EXISTS stud_data (`Last Name` VARCHAR(250),`First Name` VARCHAR(250),`Job` VARCHAR(250),`Country` VARCHAR(250)); ' 
+0

おかげで多くのことを。それは期待どおりに働いた。乾杯!! –

関連する問題