Tôi có mã này:
cursor = conn.cursor[]
cursor.execute[["insert into new_files [videos_id, filename, "
"is_processing] values [%s,%s,1]"], [id, filename]]
logging.warn["%d", cursor.rowcount]
if [cursor.rowcount == 1]:
logging.info["inserted values %d, %s", id, filename]
else:
logging.warn["failed to insert values %d, %s", id, filename]
cursor.close[]
Thật thú vị,
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
5 luôn là một, mặc dù tôi đã cập nhật cơ sở dữ liệu của mình để biến video_id thành một khóa duy nhất. Đó là, chèn không thành công vì trong các thử nghiệm của tôi, sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
6 sẽ xuất hiện [và khi tôi kiểm tra cơ sở dữ liệu, không có gì được chèn]. Nhưng vì bất kỳ lý do gì, sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
7 luôn là 1 - ngay cả sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
8 tôi có phun ra sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
7 là 1.Vì vậy, câu hỏi: Tôi có thể sử dụng
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
7 để giải quyết nếu một phần chèn đi tốt không? Nếu vậy, tôi [có lẽ] làm gì sai? Nếu không, làm thế nào để tôi kiểm tra nếu một chèn được tốt?Can I use
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
7 to work out if an insert went fine? If
so, what am I [presumably] doing wrong? otherwise, how do i check if an insert went fine? - Làm thế nào để tôi kiểm tra xem một chèn có thành công với mysqldb trong python không?
Giải pháp 1
Mã của bạn không cam kết sau khi sửa đổi [sửa đổi của bạn được cuộn trở lại]. Đó là bạn nên thêm dòng sau sau
cursor = conn.cursor[]
cursor.execute[["insert into new_files [videos_id, filename, "
"is_processing] values [%s,%s,1]"], [id, filename]]
logging.warn["%d", cursor.rowcount]
if [cursor.rowcount == 1]:
logging.info["inserted values %d, %s", id, filename]
else:
logging.warn["failed to insert values %d, %s", id, filename]
cursor.close[]
1:conn.commit[]
Không thể chèn sẽ ném
cursor = conn.cursor[]
cursor.execute[["insert into new_files [videos_id, filename, "
"is_processing] values [%s,%s,1]"], [id, filename]]
logging.warn["%d", cursor.rowcount]
if [cursor.rowcount == 1]:
logging.info["inserted values %d, %s", id, filename]
else:
logging.warn["failed to insert values %d, %s", id, filename]
cursor.close[]
2, vì vậy bạn nên sẵn sàng để bắt nó.Do đó, mã của bạn sẽ trông giống như:
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
Giải pháp 2
Tôi không có đủ danh tiếng để đưa ra nhận xét, nhưng đây là một lưu ý quan trọng:
Cũng có thể thực thi [] thất bại âm thầm nếu bạn không cam kết sau cuộc gọi. Cụ thể, các bảng Myisam không yêu cầu cam kết, nhưng những người Innodb thì có.
Giải pháp 3
Nếu chèn không thành công, bạn sẽ nhận được một ngoại lệ nâng cao hoặc ai đó sẽ hét lên hoặc bạn sẽ rơi khỏi ghế của bạn.
Giải pháp 4
Làm thế nào về việc sử dụng một khối thử/bắt thay vì nhìn vào RowCount. Nếu nó bắt được một ngoại lệ thì có một vấn đề; Nếu không, không có vấn đề.
Bình luận
Tôi có mã này:
cursor = conn.cursor[] cursor.execute[["insert into new_files [videos_id, filename, " "is_processing] values [%s,%s,1]"], [id, filename]] logging.warn["%d", cursor.rowcount] if [cursor.rowcount == 1]: logging.info["inserted values %d, %s", id, filename] else: logging.warn["failed to insert values %d, %s", id, filename] cursor.close[]
Thật thú vị,
5 luôn là một, mặc dù tôi đã cập nhật cơ sở dữ liệu của mình để biến video_id thành một khóa duy nhất. Đó là, chèn không thành công vì trong các thử nghiệm của tôi,sql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
6 sẽ xuất hiện [và khi tôi kiểm tra cơ sở dữ liệu, không có gì được chèn]. Nhưng vì bất kỳ lý do gì,sql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
7 luôn là 1 - ngay cảsql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
8 tôi có phun rasql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
7 là 1.sql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
Vì vậy, câu hỏi: Tôi có thể sử dụng
7 để giải quyết nếu một phần chèn đi tốt không? Nếu vậy, tôi [có lẽ] làm gì sai? Nếu không, làm thế nào để tôi kiểm tra nếu một chèn được tốt?sql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
Can I use
7 to work out if an insert went fine? If so, what am I [presumably] doing wrong? otherwise, how do i check if an insert went fine?sql_insert = """insert into new_files [videos_id, filename, is_processing] values [%s,%s,1]""" cursor = conn.cursor[] try: affected_count = cursor.execute[sql_insert, [id, filename]] conn.commit[] logging.warn["%d", affected_count] logging.info["inserted values %d, %s", id, filename] except MySQLdb.IntegrityError: logging.warn["failed to insert values %d, %s", id, filename] finally: cursor.close[]
Tôi ghét nó khi tôi ngã xuống ghế.
Tôi mới sử dụng Python [và MySQLDB], bất kỳ cơ hội nào bạn có thể vung tay vào một ví dụ - tức là tôi bắt được ngoại lệ nào trong khối thử?
Có một cách thanh lịch để lập trình theo chương trình cả ba khả năng?
Hãy thử: Một cái gì đó: Ngoại trừ ngoại lệ, E: In "Nó thất bại", str [e] - vì vậy chỉ cần đặt bất cứ thứ gì bạn muốn ở đâu 'cái gì đó'.
Câu hỏi. Điều gì sẽ xảy ra nếu việc chèn 500 bản ghi của bạn tại một thời điểm trước khi thực hiện [bởi một truy vấn dài hoặc nhiều lần chèn riêng biệt]? tức là tôi chỉ cam kết mỗi 500 hồ sơ; Nếu một trong những bản ghi đó không thành công, làm thế nào để tôi chỉ in một bản ghi đó và tiếp tục chèn các bản ghi khác.
@user3656612 Nó phụ thuộc vào lý do tại sao họ thất bại. Nếu vấn đề là phá vỡ một số ràng buộc, bạn có thể sử dụng chèn bỏ qua hoặc chèn ... trên bản cập nhật khóa trùng lặp. Nếu đó là lỗi kết nối, bạn không thể làm gì cả. Nếu đó là lỗi cú pháp - bạn nên xem xét việc sửa lỗi trong ứng dụng của mình.
Recents
Có liên quan
Tôi đang sử dụng đầu nối Python MySQL, tôi đã chèn một bản ghi vào cơ sở dữ liệu và nó đã thành công. Nhưng trong mã Python, làm thế nào tôi có thể biết nó có được chèn hay không? Bảng của tôi không có khóa chính. Giá trị, Matlab so với Python so với R - những lợi thế và disadvanatges cho sinh học là gì?cursor.execute[""
"INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];"
"", params]
print["affected rows = {}".format[cursor.rowcount]]
Gợi ý: 2
Tôi đang sử dụng đầu nối Python MySQL, tôi đã chèn một bản ghi vào cơ sở dữ liệu và nó đã thành công. Nhưng trong mã Python, làm thế nào tôi có thể biết nó có được chèn hay không? Bảng của tôi không có khóa chính., 1 tuần trước ngày 26 tháng 9 năm 2013 & nbsp; · Tôi đang sử dụng đầu nối Python MySQL, tôi đã chèn một bản ghi vào cơ sở dữ liệu và nó đã thành công. Nhưng trong mã Python, làm thế nào tôi có thể biết nó có được chèn hay không? Bảng của tôi không có khóa chính.我 我 我 正在 正在 正在 我 我 , 但是 但是。。。。 了 了 了 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 ... AGO MySQL: Python Làm thế nào để biết một bản ghi được chèn thành công hay không [làm đẹp máy tính của bạn: //www.hows.tech/p/recompended.html] MySQL: Python How ...
def insert[params]: db_connection = Model.get_db_connection[] cursor = db_connection.cursor[] try: cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", [params]] db_connection.commit[] except: db_connection.rollback[] Model.close_db[db_connection] return result
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]
Gợi ý: 3
Bạn có thể kiểm tra xem hàng có được chèn thành công hay không với sự trợ giúp của con trỏ.lastrowid []. Chúng ta sẽ thấy kịch bản này trong Ví dụ 2., để biết rằng, chúng ta có thể kiểm tra ID hàng cuối cùng được chèn bởi con trỏ kết nối SQLite3. Nếu lastrowid không bằng 0, thì chúng ta có thể đảm bảo theo chương trình rằng việc chèn thành công., Vâng, thường xuyên nhất, chúng ta cần biết liệu việc chèn vào truy vấn có thực sự hoạt động hay không. Chúng ta cần biết liệu bản ghi có được chèn thành công không.
Chương trình Python
import sqlite3 conn = sqlite3.connect['mysqlite.db'] c = conn.cursor[] #create table c.execute['' 'CREATE TABLE IF NOT EXISTS students [rollno real, name text, class real] '' '] c.execute['' 'INSERT INTO students VALUES[1, 'Alex', 8] '' '] #commit the changes to db conn.commit[] #close the connection conn.close[]
Gợi ý: 4
Xóa các bản ghi mà bạn không còn muốn, cập nhật các bản ghi hiện có, chèn các bản ghi mới vào cơ sở dữ liệu của bạn, bạn muốn xóa tất cả các bản ghi khỏi bảng.
insert into dept[deptno, dname, loc] values[50, 'PROGRAMMING', 'BALTIMORE']
insert into dept values[50, 'PROGRAMMING', 'BALTIMORE']
conn.commit[]
0conn.commit[]
1conn.commit[]
2Gợi ý: 5
MySQL cung cấp một số câu lệnh hữu ích khi cần phải chèn các hàng sau khi xác định liệu hàng đó trên thực tế, mới hay đã tồn tại. Sau đó, một phần chèn bình thường được thực hiện sau đó., Không tìm thấy hàng dữ liệu hiện có nào với các giá trị phù hợp và do đó một câu lệnh chèn tiêu chuẩn được thực hiện., Bạn có thể cấp một bảng người dùng và quyền cột trong MySQL với các câu lệnh Grant.
conn.commit[]
3conn.commit[]
4conn.commit[]
5conn.commit[]
6conn.commit[]
7Gợi ý: 6
Sau đó, tạo một kết nối mới, thực hiện câu lệnh và thực hiện thay đổi trong khối thử ngoại trừ. Lưu ý rằng bạn phải gọi rõ ràng & nbsp; Phương thức cam kết [] để thực hiện các thay đổi cho cơ sở dữ liệu. Trong trường hợp một hàng mới được chèn thành công, bạn có thể truy xuất ID chèn cuối cùng của cột Auto_increment bằng cách sử dụng & nbsp; thuộc tính lastrowid của đối tượng mysqlcursor., Để chèn nhiều hàng vào một bảng trong Python, bạn sử dụng & nbsp; EXECUTEMANY [] Phương thức của đối tượng MySQLCURSOR. Xem mã sau:, Để chèn các hàng mới vào bảng MySQL, bạn làm theo các bước sau:, Logic trong ví dụ này tương tự như logic trong ví dụ đầu tiên. Tuy nhiên, thay vì gọi & nbsp; Phương thức thực thi [], chúng tôi gọi & nbsp; Phương thức EXECUTEMANY [].
Phương thức sau đây chèn một cuốn sách mới vào & nbsp;
cursor = conn.cursor[]
cursor.execute[["insert into new_files [videos_id, filename, "
"is_processing] values [%s,%s,1]"], [id, filename]]
logging.warn["%d", cursor.rowcount]
if [cursor.rowcount == 1]:
logging.info["inserted values %d, %s", id, filename]
else:
logging.warn["failed to insert values %d, %s", id, filename]
cursor.close[]
9 Bảng:conn.commit[]
8Câu lệnh ________ 40 & nbsp; cho phép bạn chèn nhiều hàng vào bảng
cursor = conn.cursor[]
cursor.execute[["insert into new_files [videos_id, filename, "
"is_processing] values [%s,%s,1]"], [id, filename]]
logging.warn["%d", cursor.rowcount]
if [cursor.rowcount == 1]:
logging.info["inserted values %d, %s", id, filename]
else:
logging.warn["failed to insert values %d, %s", id, filename]
cursor.close[]
9:conn.commit[]
9Để chèn nhiều hàng vào một bảng trong Python, bạn sử dụng & nbsp; Phương pháp
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]2 của đối tượng
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]3. Xem mã sau:
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
0Gợi ý: 7
Chèn một hàng vào các nhà phân phối bảng, trả về số thứ tự được tạo bởi mệnh đề mặc định:, Phần này bao gồm các tham số có thể được sử dụng khi chỉ chèn các hàng mới. Các tham số được sử dụng riêng với mệnh đề xung đột trên được chuyển sang một phân vùng mới., Lưu ý rằng các ràng buộc loại trừ không được hỗ trợ như những người trọng tài với cập nhật xung đột. Trong mọi trường hợp, chỉ có các ràng buộc không thể bảo vệ và các chỉ mục duy nhất được hỗ trợ làm trọng tài.
Tóm tắt
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
1Khi hoàn thành thành công, lệnh
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]0 trả về thẻ lệnh của biểu mẫu
Chèn một hàng vào bảng
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]5:
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
2Trong ví dụ này, cột
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]6 bị bỏ qua và do đó nó sẽ có giá trị mặc định:
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
3Ví dụ này sử dụng mệnh đề
cursor.execute["" "INSERT INTO `User`[`UID`, `IP`] VALUES[%s,%s];" "", params] print["affected rows = {}".format[cursor.rowcount]]7 cho các cột ngày thay vì chỉ định giá trị:
sql_insert = """insert into new_files [videos_id, filename, is_processing]
values [%s,%s,1]"""
cursor = conn.cursor[]
try:
affected_count = cursor.execute[sql_insert, [id, filename]]
conn.commit[]
logging.warn["%d", affected_count]
logging.info["inserted values %d, %s", id, filename]
except MySQLdb.IntegrityError:
logging.warn["failed to insert values %d, %s", id, filename]
finally:
cursor.close[]
4