2016-08-18 5 views
0

私はと呼ばれるPostgresのテーブルにファイル名を挿入するために、次のコードを持っている「ログ」はPostgresのテーブルにファイル名を挿入する

c = engine.connect() 
conn = c.connection 
cur = conn.cursor() 

cur.execute("SELECT filename from logs") 
rows1 = cur.fetchall() 
rows1 = [x[0] for x in rows1] 

for root, directories, filenames in os.walk(path): 
    for filename in filenames: 
     fname = os.path.join(root,filename) 
     if os.path.isfile(fname) and fname[-4:] == '.log': 
      if fname not in rows1: 
      print fname 
      cur.execute(""" INSERT INTO logs(filename) VALUES (%(fname)s)""") 
      conn.commit() 

私は

ProgrammingError: syntax error at or near "%" 
LINE 1: INSERT INTO logs(filename) VALUES (%(fname)s) 

は私が知っているかもしれないエラーを取得しています私は間違っている?

答えて

0

クエリにパラメータを渡していないため、置換は行われません。アダプタはリテラル文字列(%(fname)s)をPostgresに渡します。

cur.execute("""INSERT INTO logs(filename) VALUES (%(fname)s)""", {'fname': fname'}) 
+0

これは機能しています..ありがとうダニエル – ckp

関連する問題