Search notes:

Python - sqlite3: Select single row (fetchone)

The fetchone method of the cursor object returns one record as a tuple.

Inserting a record and getting its rowid

The following simple example inserts a record into a table with a returning rowid clause and used fetchone() to return the inserted record's rowid.
import os
import sqlite3

db_filename = 'returning-rowid.db'
if os.path.isfile(db_filename):
   os.remove(db_filename)

db = sqlite3.connect(db_filename)

cur = db.cursor()

cur.execute('create table T (a text, b integer)')

print(cur.execute('insert into T values (?, ?) returning rowid' , ('abc', 99)).fetchone()[0])
Github repository about-python, path: /standard-library/sqlite3/Cursor/fetchone.py

Another example

import sqlite3
import os.path

if os.path.isfile('db'):
   os.remove('db')

db = sqlite3.connect('db')
cur = db.cursor()

cur.execute('begin transaction')
cur.execute('create table T (id integer primary key, txt text unique)')

cur.executemany('insert into T values(?, ?)', [
   (42, 'forty-two'  ),
   (99, 'ninety-nine'),
   ( 0, 'zero'       ),
   ( 7, 'seven'      ),
   (-1,  None        ), # Note null (None) can be inserted multiple times
   (-2,  None        ), # inspite of the unique constraint
])

cur.execute('commit')

def select_id(txt):
    if txt != None:
       res = cur.execute('select id from T where txt = ?', (txt, ))
    else:
       res = cur.execute('select id from T where txt is null')

    row = res.fetchone()

    if row:
       print('ID of ' + str(txt) + ' is ' + str(row[0]))
    else:
       print('No row found for ' + str(txt))

select_id('ninety-nine')
select_id('forty-two'  )
select_id( None        )
select_id('inexisting' )
Github repository about-python, path: /standard-library/sqlite3/Cursor/select-single-row.py

See also

sqlite3

Index

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:78 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(78): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/developm...', 1758203972, '216.73.216.150', 'Mozilla/5.0 App...', NULL) #2 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/development/languages/Python/standard-library/sqlite3/Cursor/select-single-row(102): insert_webrequest() #3 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 78