Pythonで変数がNULL
であるときにNone
キー値をPostgreSQLデータベースに入力するための良い方法はありますか?
このクエリを実行する:
mycursor.execute('INSERT INTO products (user_id, city_id, product_id, quantity, price) VALUES (%i, %i, %i, %i, %f)' %(user_id, city_id, product_id, quantity, price))
user_id
がTypeError
の場合、None
例外が発生します。
psycopg2
ドライバを使用して、値がNULL
のときにNone
をデータベースに挿入するにはどうすればよいですか?
データベースにnull値を挿入するには、2つのオプションがあります。
None
を使用また、SQLインジェクションを防ぐために、クエリに通常の文字列補間を使用しないでください。
execute()
に2つの引数を渡す必要があります。例:
mycursor.execute("""INSERT INTO products
(city_id, product_id, quantity, price)
VALUES (%s, %s, %s, %s)""",
(city_id, product_id, quantity, price))
代替#2:
user_id = None
mycursor.execute("""INSERT INTO products
(user_id, city_id, product_id, quantity, price)
VALUES (%s, %s, %s, %s, %s)""",
(user_id, city_id, product_id, quantity, price))
現在のpsycopgでは、Noneの代わりに、 'NULL'に設定された変数を使用します。
variable = 'NULL'
insert_query = """insert into my_table values(date'{}',{},{})"""
format_query = insert_query.format('9999-12-31', variable, variable)
curr.execute(format_query)
conn.commit()
>> insert into my_table values(date'9999-12-31',NULL,NULL)