2017-12-23 10 views
0

database_insert 함수가 트리거 될 때마다 test_text 변수의 값을 Postgres 9.6 데이터베이스에 삽입하려고합니다.Psycopg2 - 문자열 형식화 중에 모든 인수가 변환되지 않았습니다.

나는 자리없이 아래의 코드를 사용하는 경우 내가 파이썬 3.6를 사용하고 psycopg2의 V 2.7

해요 : '테스트'와 %의 교체 등 제거 (test_text)는 - 내가 기대하는대로 작동합니다. ... 기능, 나는 아래의 오류를 얻을 %의 자리 표시자를 사용하여 test_text 변수의 값을 삽입 할려고 그러나

def database_insert(update): 

    test_text = 'This is some test text' 

    with psycopg2.connect("DB CONNECTION DETAILS ARE HERE'") as conn: 

     cur = conn.cursor() 

     cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 

     conn.commit() 

     cur.close() 

    conn.close() 

...

cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 
TypeError: not all arguments converted during string formatting 

내가 갈거야 어디에 어떤 도움 w 이것과 함께 rong 많이 감사하겠습니다!

답변

1

여기에 미묘한 문제가 있습니다.

괄호/괄호뿐만 아니라 튜플을 만들려면 쉼표가 필요합니다.

그래서 단순히 변경 :

cur.execute("INSERT INTO test VALUES(%s);", (test_text,)) 

그리고 당신은 좋은해야합니다!

+0

나는 그것이 그처럼 간단한 수정이라고는 믿을 수 없다. 나는이 문제를 해결하는 방법에 대해 여러 시간 동안 문자 그대로 찾아왔다. 감사합니다. Bernie! 이것이 가능한 한 빨리 정답으로 표시 할 것입니다 - 메리 크리스마스! –

+0

당신도 메리 크리스마스! 해피 코딩 – bernie