2017-11-28 21 views
0

私は、python 3.6とpsycopg2を使用してCSVファイルをpostgresデータベースにアップロードしています。 postgresqlは、変数に引用符とparanthesisがあまりにも幸せではありません。そのような変数をデータベースに挿入するスマートな方法はありますか?psycopg2テーブルに引用符と括弧を含む変数を挿入する

var_list = ['p_pladser.3320', '1108', "Christian II's Allé", '1', 'nej', "Christian II's Allé", 'Ulige husnr.', 'Amager Vest', '', 'Uafmærket parkering', '2012-02-14T12:06:07', '2009-07-15T00:00:00', '', '37086', 'MULTILINESTRING ((12.60868230570311 55.65583969695316, 12.608588075325498 55.65581925066134))'] 

私は似ているが、単純な問題に別のpostから

query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES %s" % repr(tuple(map(str,var_list))) 
dbcur.execute(query) 

query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES %s" % ','.join('?' * len(var_list)) 
cursor.execute(query, var_list) 

どちらの提案を試してみました。

+0

ドキュメントを読むのはどうですか? http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries – piro

答えて

-1

SQLでは、「余分なものを追加して」エスケープすることが分かりました。私はちょうど次のことを行うと、クエリは今動作します。要するに

# Replacing single quote with two single quotes 
var_list = [w.replace("'", "''") for w in var_list] 

# Adding the variables to query 
query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES (" + (', '.join("'" + item + "'" for item in row)) + ")" 

# Executing query     
dbcur.execute(query) 
+0

男、あなたは冗談を言っているでしょうか?血まみれのドキュメントやウェブコミックを読んでください。 – piro

+0

あなたは、stackoverflowのほとんどのポストのためにそれを言うことができます。 –

関連する問題