2017-05-12 13 views
0

Pythonを使用してMySqlに文字列を挿入しようとしています。 文字列にセミコロンが2つあることがあります。Pythonを使用してmysqlの文字列でセミコロンを無視する方法

これにより、文字列の一部のみが挿入されます。 私は文字列をエスケープしようとしましたが、それは役に立たないようです。

ヘルプは、広大な助けになるでしょう。「世界をこんにちは」私は上記のコードを挿入すると

例のコードは、それが「こんにちは」だけではなく挿入し、

string = "Hello; World" 
string = string.replace("'","''") //this is done incase i have "'" in a different scenario 
string = re.escape(string) 

update table set column = '"+string+"'; 

下回ります。

+3

変数名として 'string'を使うのは悪い形式です – Ludisposed

+0

クエリ文字列を取り除くのではなく、Pythonでクエリを作成するときにパラメータを使用します。 –

+0

テーブルコラムにセミコロンを挿入する必要があります。だから私はセミコロンを取り除くことはできません –

答えて

1

あなたは、DBのAPIに(プレースホルダと明示的なパラメータを使用して)正しい方法を使用してこの問題を持つべきではありません。

>>> sql = "update auth_user set last_name = %s where id=%"; 
>>> args = ("FOO;BAR", 1) 
>>> c.execute(sql, args) 
>>> c.execute("select last_name from auth_user where id=1") 
1L 
>>> c.fetchone() 
(u'FOO;BAR',) 

が、これは正しく引数をエスケープの世話をするだけでなく、保護されますあなたはsql injectionsからです。

関連する問題