PyMySQL
是在Python3.x
版本中用來連接MySQL
伺服器的一個函式庫,Python2
中使用mysqldb
。 PyMySql
遵循Python資料庫API v2.0
的規範,並包含了pure-Python MySQL
客戶端程式庫。
$ pip install pymysql
在使用PyMySQL
連接MySQL
資料庫之前,請確保MySQL
資料庫安裝配置完成,具體如何安裝與設定MySQL
資料庫,請參考MySQL 安裝和MySQL 管理。
import pymysql # 数据库服务器名 HOSTNAME = 'node05' # 数据库用户名 USER = 'root' # 数据库名 DATABASE = 'cayman' # 数据库密码 PASSWORD = 'Love88me' # 打开数据库连接 conn = pymysql.connect(HOSTNAME, USER, PASSWORD, DATABASE) # 使用cursor()方法创建一个游标对象 cursor = conn.cursor() # 使用execute()方法执行SQL查询语句 cursor.execute("select VERSION()") # 使用fetchone()查询单条数据 data = cursor.fetchone() print(f"Database Version: {data}") # 关闭数据库连接 conn.close()
import pymysql # 设置数据库配置项 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor对象创建一个流标对象 cursor = db.cursor() # 使用execute()方法执行SQL, 如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS employee") # 使用预处理语句创建表 sql = """ CREATE TABLE employee( id bigint primary key auto_increment, user_name varchar(50) not null, age int, sex char(1), income float ) """ # 执行sql语句 cursor.execute(sql) # 关闭数据库连接 db.close()
import pymysql # 设置数据库配置项 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor对象创建一个流标对象 cursor = db.cursor() # SQL语句 sql = """ insert into employee(user_name, age, sex, income) values ('风清扬', 64, '男', 22000); """ try: # 执行sql语句 cursor.execute(sql) # 提交 db.commit() except: # 如果发生错误就回滚 db.rollback() # 关闭数据库连接 db.close()
import pymysql # 设置数据库配置项 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor对象创建一个流标对象 cursor = db.cursor() # SQL语句 sql = " insert into employee(user_name, age, sex, income) values (%s, %s, %s, %s)" data = ( ('风清扬', 64, '男', 22000), ('令狐冲', 22, '男', 14000), ('任盈盈', 20, '男', 10000), ('东方不败', 32, '男', 18000), ('任我行', 56, '男', 17000), ('段誉', 33, '男', 19000), ('王语嫣', 26, '女', 9000), ('木婉清', 23, '女', 6000), ('乔峰', 38, '男', 23000), ('阿朱', 24, '女', 5000), ('阿紫', 22, '女', 5500), ('虚竹', 35, '男', 11000), ('梦姑', 25, '女', 6500), ('梅超风', 41, '女', 15000), ('陈玄风', 44, '男', 12000), ('杨过', 28, '男', 24000), ('小龙女', 38, '女', 15000), ('鸠摩智', 44, '男', 16000) ) try: # 执行sql语句 cursor.executemany(sql, data) # 提交 db.commit() except: # 如果发生错误就回滚 db.rollback() # 关闭数据库连接 db.close()
Python
查詢MySQL
使用fetchone()
取得單一數據,使用fetchall()
方法取得多個資料。
fetchone(): 此方法取得下一個查詢結果集。結果集合是一個物件
fetchall(): 接收全部的回傳結果行;
rowcount(): 這是一個唯讀屬性,並傳回執行execute()方法後影響的行數。
查詢employee
表中income
(薪資)大於20000的所有資料
# 1.查询employee表中工资大于20000的员工信息 import pymysql # 设置数据库配置项 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor对象创建一个流标对象 cursor = db.cursor() # 查询语句 sql = "select * from employee where income >'%d' "%(20000) try: # 执行sql语句 cursor.execute(sql) # 获取所有满足条件的列表 ret = cursor.fetchall() # 遍历打印结果 for row in ret: user_name = row[1] age = row[2] sex = row[3] income = row[4] print(f"员工: {user_name},年龄: {age}, 性别: {sex}, 工资: {income}") except: print("无满足条件的数据或查询出错!!") # 关闭数据库连接 db.close()
import pymysql # 设置数据库配置项 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor对象创建一个流标对象 cursor = db.cursor() # 更新语句 sql = "update employee set income=income+income*0.1 where sex='%c'"%('女') try: # 执行SQL语句 cursor.execute(sql) # 提交 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库 db.close()
import pymysql # 设置数据库连接信息 HOSTNAME = 'node05' USERNAME = 'root' PASSWORD = 'Love88me' DATABASE = 'cayman' # 打开数据库连接 db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) # 使用cursor()方法获取游标 cursor = db.cursor() # 构建删除数据SQL语句 sql = "delete from employee where user_name = '%s'"%('鸠摩智') try: # 执行sql语句 cursor.execute(sql) # 提交 db.commit() except: # 发生异常时回滚 db.rollback() # 关闭数据库连接 db.close()
在資料庫操作中,事務機制可以保證資料的一致性。最基本的事務應具備4個屬性: 原子性、一致性、隔離性、和持久性。這四個屬性被稱為ACID
特性。
原子性(Atomicity): 一個事務是一個不可分割的工作單位,事務中包含的諸操作要么都做,要么都不做。
在資料庫中,交易必須將資料庫從一種狀態轉換為另一種一致性狀態,以實現一致性。一致性與原子性是密切相關的。
Isolation refers to the ability of a transaction to execute without interference from other transactions.。在一個事務內部,操作和使用的資料對其他並發事務是封閉的,因此並發執行的各個事務不能互相干擾。
持久性(Durability): 持續性也稱為永久性(permanence),指一個交易一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
Python DB API 2.0
的交易提供了兩個方法commit
和rollback
。對於支援事務的資料庫程式設計中,當流標建立時,就自動開啟了一個隱形的資料庫事務。
以上是MySQL資料庫如何安裝與配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!