python学习-第15课

一、数据库连接

1.1.数据库接口标准

Python的数据库接口标准是Python DB-API。大多数Python数据库接口遵循这个标准。
可以为应用程序选择正确的数据库。Python数据库API支持广泛的数据库服务器,如 :
GadFly
mSQL
MySQL
PostgreSQL
Microsoft SQL Server 2000
Informix
Interbase
Oracle
Sybase
SQLite
以下是可用的Python数据库接口 - Python数据库接口和API的列表。需要为要访问的每种数据库下载一个单独的DB API模块。 例如,如果需要访问Oracle数据库和MySQL数据库,则必须同时下载Oracle和MySQL数据库模块。
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

1.2.安装PyMySQL

PyMySQL 下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5。
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install

1.3.MySql的事物

事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。

1.4.数据连接

import pymysql

# 创建数据库连接
conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchall()
print("Database version : {0} ".format(data))
# 关闭游标对象
cursor.close()
# 关闭数据库连接
conn.close()
结果
Database version : (('5.6.35',),) 

1.5.创建数据表

import pymysql

#创建数据库连接
conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="testdb")
#创建游标对象
cursor=conn.cursor()
#使用excute()删除已创建的表
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""
#使用游标执行SQL
cursor.execute(sql)
#关闭游标
cursor.close()
#关闭连接
conn.close()


1.6.插入操作

import pymysql

#创建数据库连接
conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="testdb")
#创建游标对象
cursor=conn.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Abel', 'Test', 20, 'M', 2000)"""
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
except:
    # 如果发生错误则回滚
    conn.rollback()
#关闭游标
cursor.close()
# 关闭数据库连接
conn.close()
结果



1.7.查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
示例
查询EMPLOYEE表中salary(工资)字段大于1000的所有数据:

import pymysql

conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="testdb")
cursor=conn.cursor()
sql='''SELECT * FROM EMPLOYEE 
    WHERE INCOME > {0}'''.format(1000)
try:
    cursor.execute(sql)
    results=cursor.fetchall()
    for row in results:
        fname=row[0]
        lname=row[1]
        age=row[2]
        sex=row[3]
        income=row[4]
        print("fname={0}, lname={1}, age={2}, sex={3}, income={4}".format(fname,lname,age,sex,income))
except:
    print("Error: unable to fetch data")

conn.close()
结果
fname=Abel, lname=Test, age=20, sex=M, income=2000.0
fname=abc, lname=hao, age=23, sex=G, income=1802.0

1.8.更新操作

import pymysql

conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="testdb")
cursor=conn.cursor()
sql='UPDATE EMPLOYEE SET AGE = AGE + 1 ,SEX = "{0}" WHERE FIRST_NAME="{1}"'.format("M","abc")

try:
    cursor.execute(sql)
    conn.commit()
except:
    conn.rollback()
conn.close()

1.9.删除操作

import pymysql

conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="testdb")
cursor=conn.cursor()
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '{0}'".format(20)
try:
    cursor.execute(sql)
    conn.commit()
except:
    conn.rollback()

conn.close()









猜你喜欢

转载自blog.csdn.net/biankm_gz/article/details/80215629