PyMySQL基本使用
轉(zhuǎn)載:https://blog.csdn.net/lmb1612977696/article/details/78166180
- import pymysql
- #打開數(shù)據(jù)庫 (如果連接失敗會報錯)
- #db = pymysql.connect(host = '127.0.0.1', port = 3306, user = 'minbo', passwd = '123456', db = 'pythontest')
- db = pymysql.connect(host = '127.0.0.1', port = 3306, user = 'minbo', passwd = '123456', db = 'pythontest', charset="utf8")
- #獲取游標(biāo)對象
- cursor = db.cursor()
- #執(zhí)行sql查詢操作
- sql_select = "select version()"
- cursor.execute(sql_select)
- #使用fetchone()獲取單條數(shù)據(jù)
- data = cursor.fetchone()
- print("DB version is : %s" % data)
- #如果user表存在,就刪除
- cursor.execute("drop table if exists user")
- #創(chuàng)建表user
- sql_create = "create table user(id int, name varchar(10)) engine = innodb charset = utf8"
- cursor.execute(sql_create)
- #插入操作
- sql_insert = '''insert into user(id, name) values (2, "李明")'''
- try:
- #執(zhí)行sql
- cursor.execute(sql_insert)
- db.commit()
- except:
- #發(fā)生異常
- db.rollback()
- #查詢操作
- sql_select = '''select * from user'''
- try:
- #執(zhí)行sql語句
- cursor.execute(sql_select)
- #獲取所有記錄列表
- result = cursor.fetchall()
- for row in result:
- id = row[0]
- name = row[1]
- print("id = %d, name = %s" % (id, name))
- except:
- print("Error: unable to fecth data")
- #執(zhí)行事務(wù)
- '''事務(wù)機制可以確保數(shù)據(jù)的一致性
- 1.事務(wù)有四個屬性:原子,一致,隔離,持久;通常稱為ACID
- 2.Python DB API2.0的事務(wù)提供了兩個方法:commit 和 rollback
- 3.對于支持事務(wù)的數(shù)據(jù)庫,在python數(shù)據(jù)庫編程中,當(dāng)游標(biāo)建立之時,就自動開始了一個隱形的數(shù)據(jù)庫事務(wù),
- 這個區(qū)別于mysql客戶端,commit()方法提交所有的事務(wù),rollback()方法回滾當(dāng)前游標(biāo)的所有操作。每個方法都開啟了一個新的事務(wù)'''
- #例子
- sql_insert = '''insert into test(id, name) values (1, 'china')'''
- try:
- cursor.execute(sql_insert)
- db.commit()
- except:
- db.rollback()
- print("end")
- #關(guān)閉連接
- db.close()