2018年11月11日日曜日

開発環境

Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley (著), 佐藤 直生 (監訳)、松永 多苗子 (翻訳)、オライリージャパン)の1章(データとテーブル - あらゆるものにふさわしい場所)、自分で考えてみよう(p. 39).を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3
import psycopg2 as sql

conn = sql.connect(database='gregs_list', user='kamimura')
cursor = conn.cursor()

_sqls = [
    '''
INSERT INTO my_contacts
(last_name, first_name, email, gender, birthday,
profession, location, status, interests, seeking)
VALUES
('アンダーソン','ジリアン','jill_anderson@breakneckpizza.com','F','1980-09-05',
'テクニカルライター','カヤック乗り、爬虫類','恋人、友達')
)''',  # valuesに住所がない。
    '''
INSERT INTO my_contacts
(last_name, first_name, email, gender, birthday,
profession, location, status, interests, seeking)
VALUES
('アンダーソン','ジリアン','jill_anderson@breakneckpizza.com','F','1980-09-05',
'テクニカルライター','カリフォルニア州パロアルト','独身','カヤック乗り、爬虫類','恋人、友達')
)''',  # emailがない。
    '''
INSERT INTO my_contacts
(last_name, first_name, email, gender, birthday,
profession, location, status, interests, seeking)
VALUES
('アンダーソン','ジリアン','jill_anderson@breakneckpizza.com','F','1980-09-05',
'テクニカルライター' 'カリフォルニア州パロアルト','独身','カヤック乗り、爬虫類','恋人、友達')
)''',  # valuesのテクニカルライターの後のコンマが抜けている。
    '''
INSERT INTO my_contacts
(last_name, first_name, email, gender, birthday,
profession, location, status, interests, seeking)
values
('アンダーソン','ジリアン','jill_anderson@breakneckpizza.com','F','1980-09-05',
'テクニカルライター','カリフォルニア州パロアルト','独身','カヤック乗り、爬虫類','恋人、友達)
)'''  # valuesの恋人、友達がシングルクォートで閉じられてない。
]

for _sql in _sqls:
    try:
        cursor.execute(_sql)
    except Exception as err:
        print(type(err), err)

conn.commit()
cursor.close()
conn.close()

入出力結果(Terminal, Jupyter(IPython))

$ ./sample3.py
<class 'psycopg2.ProgrammingError'> syntax error at or near ")"
LINE 8: )
        ^

<class 'psycopg2.ProgrammingError'> syntax error at or near ")"
LINE 8: )
        ^

<class 'psycopg2.ProgrammingError'> syntax error at or near "'カリフォルニア州パロアルト'"
LINE 7: 'テクニカルライター' 'カリフォルニア州パロアルト','独身','カ...
                             ^

<class 'psycopg2.ProgrammingError'> unterminated quoted string at or near "'恋人、友達)
)"
LINE 7: ...ルニア州パロアルト','独身','カヤック乗り、爬虫類','恋人、友...
                                                             ^

$

0 コメント:

コメントを投稿