나는 간단한 테이블을 만들 :
CREATE TABLE contacts (
id serial PRIMARY KEY,
name VARCHAR (100),
phones TEXT []
);
을 당신이 사용 pydb
있다고 가정하고 있는데 아래 표와 같은 테이블을 생성해야
id | name | phones
----+------+--------------
1 | | {123,222,33}
내 파이썬 코드는 간단하다 하나의 목록에 삽입하십시오.
import pgdb
conn = pgdb.connect(database='test')
cur = conn.cursor()
lst = ['123','222','33']
cur.execute('insert into contacts(phones) values (%s)', (lst,))
conn.commit()
저에게 맞습니다! 나는 commit
커서 또는 필드 유형이 올바르지 않다고 생각합니다! 내 파이썬 코드를 실행 표를 확인하자
CREATE TABLE tags_table(tags TEXT[]);
하기 전에 : 위로 예
, 난 당신 같은 테이블을 만들 수 있습니다.
test=# select * from tags_table;
tags
------
(0 rows)
내 파이썬 코드 : 당신이 보여해야하는 이유
이
test=# select * from tags_table;
tags
---------------
{foo}
{foo,boo,goo}
{boo,zoo}
(3 rows)
난 정말 이해가 안 :
#import pgdb
#conn = pgdb.connect(database='test')
#if psycopg2 has used
#try this
import psycopg2
conn = psycopg2.connect(database='test')
cursor = conn.cursor()
tags_list = [
['foo'],
['foo', 'boo', 'goo'],
['boo', 'zoo']
]
for tags in tags_list:
cursor.execute("""INSERT INTO tags_table(tags) VALUES (%s);""", (tags,))
conn.commit()
위의 코드를 실행 한 후, 내 표는 그 결과를 가지고 결과는 {}
으로 표시되지만 사용자가 직접 List
유형을 선언하여이를 수행하는 간단한 방법이 있습니다.
class MyList(list):
def __str__(self):
items = ','.join(self)
return '{' +'{}'.format(items if items else '') + '}'
def __repr__(self):
return self.__str__()
for i in d:
j = MyList(i[0])
print j
다음과 같은 결과가 표시됩니다.
{foo}
{foo,boo,goo}
{boo,zoo}
{foo}
{foo,boo,goo}
{boo,zoo}
패스'tags' 대신 (태그)''의. –
테이블 구조를 여기에 넣을 수 있습니까 ~ –
@ cᴏʟᴅsᴘᴇᴇᴅ 그렇다면'문자열 형식을 변환하는 동안 모든 인수가 변환되지 않았습니다 ' –