2016-08-04 3 views
0

私はPythonスクリプトでmysqldbを使用しようとしています。ここでdb.close()のSynaxエラー

スクリプト

cursor = db.cursor() 

    sql = """INSERT INTO location(`name`, `lat`, `long`, `guid`, `image`, `date`)VALUES(%(name)s, %(lat)s, %(long)s, %(guid)s, %(image)s, %(date)s)""" 

    try: 
     cursor.execute(sql) 
     db.commit() 

db.close() 

イムgettig db.close上のエラー()

"db.close() ^ にSyntaxError:無効な構文" からのコードの一部であります

ここにはどんな提案もありますか?

+0

インデントを:例外がログに記録することができるように、それはexcept句を含む価値がある。実際には

try: cursor.execute(sql) db.commit() finally: db.close() 

:あなたは、DB接続がクローズされていることを確認することができますfinally句で

? 'try:'と同じレベルに字下げする必要があります。 – Owen

+5

'try'の後に' except'を忘れてしまいました。 –

+0

これらはあなたが実際に使用している引用符ですか? Backticks ... – erip

答えて

2

tryexceptなしで使用することはできません。

すべてのエラーを無視する適切な方法はこれです:

​​
+0

'db.close'は' finally'にあるべきですか? – erip

1

エラーが試みである: - それは除いて探している:前db.closeへ。

0

完全に動作するサンプルを投稿した場合は、誰もが簡単に生き生きとします。 私はそれは私がこれを実行すると、私は取得

class fake: 
    def commit(self,):pass 
    def execute(self,sql):pass 
    def close(self,):pass 


db =fake() 
cursor=fake() 

if 1: 
    sql = """INSERT INTO location(`name`, `lat`, `long`, `guid`, `image`, `date`)VALUES(%(name)s, %(lat)s, %(long)s, %(guid)s, %(image)s, %(date)s)""" 

    try: 
     cursor.execute(sql) 
     db.commit() 

db.close() 

を実行するためにあなたにいくつかのダミーのコードをポスト追加:あなたはあなたの例では除く句が欠落している示している

$ python3 test.py 
    File "test.py", line 17 
    db.close() 
    ^
IndentationError: unexpected unindent 
$ 

これは報告したエラーではありません。構文エラーは、あなたの質問に含まれていないコードの一部です。

0

コードでインデントエラーを無視すると、tryステートメントでexcept句、finally句、またはその両方を使用する必要があります。

import traceback 

try: 
    cursor.execute(sql) 
    db.commit() 
except Exception as exc: 
    traceback.print_exc() # or whatever logging you require 
    raise     # optionally re-raise the exception 
finally: 
    db.close()    # _always_ executed 
関連する問題