INSERT INTO 문을 실행합니다
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
기본 키를 얻고 싶습니다.
내 테이블에는 2 개의 열이 있습니다.
id primary, auto increment
height this is the other column.
방금 삽입 한 후 “id”를 어떻게 얻습니까?
답변
사용 cursor.lastrowid
커서 오브젝트에 삽입 된 마지막 행의 ID를 얻기 위해, 또는 connection.insert_id()
해당 연결의 마지막 삽입에서 ID를 얻을 수 있습니다.
답변
또한 cursor.lastrowid
(MySQLdb에서 지원하는 dbapi / PEP249 확장) :
>>> import MySQLdb
>>> connection = MySQLdb.connect(user='root')
>>> cursor = connection.cursor()
>>> cursor.execute('INSERT INTO sometable VALUES (...)')
1L
>>> connection.insert_id()
3L
>>> cursor.lastrowid
3L
>>> cursor.execute('SELECT last_insert_id()')
1L
>>> cursor.fetchone()
(3L,)
>>> cursor.execute('select @@identity')
1L
>>> cursor.fetchone()
(3L,)
cursor.lastrowid
connection.insert_id()
MySQL에 대한 다른 왕복 보다 다소 저렴 하고 훨씬 저렴합니다.
답변
파이썬 DBAPI 사양은 커서 객체에 대한 ‘lastrowid’속성을 정의하므로 …
id = cursor.lastrowid
… 작동해야하며 분명히 연결 기반입니다.
답변
SELECT @@IDENTITY AS 'Identity';
또는
SELECT last_insert_id();
답변
이것은 파이썬에서 PyMySql의 요구 사항 일 수도 있지만 ID를 원했던 정확한 테이블의 이름을 지정해야한다는 것을 알았습니다.
에:
cnx = pymysql.connect(host='host',
database='db',
user='user',
password='pass')
cursor = cnx.cursor()
update_batch = """insert into batch set type = "%s" , records = %i, started = NOW(); """
second_query = (update_batch % ( "Batch 1", 22 ))
cursor.execute(second_query)
cnx.commit()
batch_id = cursor.execute('select last_insert_id() from batch')
cursor.close()
batch_id
Out : 5
… 또는 올바른 Batch_ID 값이 실제로 무엇이든