数据库开发

mysql驱动

安装pymysql

pip3 install pymysql

建立一个Connect连接

Connection初始化常用参数 说明
host 主机
user 用户名
password 密码
database 数据库
port 端口
import pymysql

# >建立一个连接依顺序给定初始化参数(host,user,password,database)
conn = pymysql.connect(‘192.168.189.151‘,‘root‘,‘root‘,‘test‘) # 返回一个Connection类的实例

# >建立连接一定要断开连接释放资源
conn.close()

# >怕连接出现问题,如果有异常需要把异常抛出
try:
    conn = pymysql.connect(‘192.168.189.151‘,‘root‘,‘root‘,‘test‘) # 返回一个Connection类的实例
finally:
    conn.close() # 断开连接释放资源

# >如果连接失败就不用在释放资源
conn = None
try:
    conn = pymysql.connect(‘192.168.189.151‘,‘root‘,‘root‘,‘test‘) # 返回一个Connection类的实例
finally:
    if conn: # 连接不成功conn值为none,条件为假不进入语句块
        conn.close() # 断开连接释放资源


操作数据库

# >获取游标,操作数据库,必须使用游标,需要先获取一个游标对象
cursor = conn.cursor() # 返回一个新的游标对象,连接关闭前,游标对象可以反复使用

# >游标也需要释放资源
cursor.close()

# >使用游标操作数据库
sql = "insert into t values(10, ‘dean‘,30)" # 构建 一个sql语句
line = cursor.execute(sql) # 用cursor类实例,提供的execute方法,把sql语句给他就行了,执行后会返回一个影响的行数
print(line) # 这个行数愿意那就拿,不愿意拿就不要了
cursor.close()

# >在Connection类的__init__方法的中有一句话‘是否应该开启自动提交呢’
import pymysql

conn = None
try:
    conn = pymysql.connect(‘192.168.189.151‘,‘root‘,‘root‘,‘test‘) # 返回一个Connection类的实例
    print (conn.ping(False))

    # 获取一个cursor游标
    cursor = conn.cursor()
    
    sql = "insert into t values(10, ‘dean‘,30)" # 构建 一个sql语句
    line = cursor.execute(sql) # 用cursor类实例,提供的execute方法,把sql语句给他就行了,执行后会返回一个影响的行数
    print(line) # 这个行数愿意那就拿,不愿意拿就不要了
    cursor.close()
finally:
    if conn: # 连接不成功conn值为none,条件为假不进入语句块
        conn.close() # 断开连接释放资源

# autocommit: Autocommit mode. None means use server default. (default: False)
# 是否应该开启自动提交呢(默认是False),没有提交所以语句执行不成功,数据库没有插入数据
# 生产环境中不用开启,一般需要手动管理事务。


事务管理

# >Connection类有三个方法;rollback 回滚事务
conn.rollback()

# >Connection类有三个方法;begin开始事务
conn.begin()

# >Connection类有三个方法;conmit 将变更提交
conn.conmit()

# >添加事务,这样运行就可以操作表
import pymysql

conn = None
cursor =None
try:
    conn = pymysql.connect(‘192.168.189.151‘,‘root‘,‘root‘,‘test‘) # 返回一个Connection类的实例
    print (conn.ping(False))

    # 获取一个cursor游标
    cursor = conn.cursor()
    
    sql = "insert into t values(10, ‘dean‘,30)" # 构建 一个sql语句
    line = cursor.execute(sql) # 用cursor类实例,提供的execute方法,把sql语句给他就行了,执行后会返回一个影响的行数
    print(line) # 这个行数愿意那就拿,不愿意拿就不要了

    cursor.close()
    conn.commit() # 如果没有异常,将变更提交

except:
    conn.rollback() # except有任何异常,回滚事务,保证事务的原子性,一旦出现异常全部回滚

finally: # 有没有异常都执行
    if cursor:
        cursor.close() # 关闭游标,释放资源,cursor值为none,条件为假不进入语句块
    if conn: # 连接不成功conn值为none,条件为假不进入语句块
        conn.close() # 断开连接释放资源

数据库开发

上一篇:flask连接mysql导出excel表格在客户端提供提供下载功能


下一篇:mongoDB