# 文件名：08_SQLAlchemy-Raw-SQL_Delete_Data.py
# 功能说明：通过SQLAlchemy-Raw-SQL（MySQL+PyMySQL）删除数据库中的数据表的数据记录

#-------------------------------------------------------------------------
# 一、导入SQLAlchemy模块中相关的函数
#-------------------------------------------------------------------------
from sqlalchemy import create_engine

#-------------------------------------------------------------------------
# 二、建立初步连接（此时尚未真正连接MySQL数据库）
#-------------------------------------------------------------------------
# 定义数据库名
DB_NAME = 'mydb'         
# 定义数据库连接路径DB_URL 
DB_URL = "mysql+pymysql://myuser:mypasswd@127.0.0.1:3306/{}?charset=utf8mb4".format(DB_NAME)
#-------------------------------------------------------------------------
# 2. 基于数据库连接路径创建引擎实例对象myengine
try:
    myengine = create_engine(DB_URL, max_overflow=10, echo=False)
    print('创建引擎成功！')
except:
    print('创建引擎失败！')

#-------------------------------------------------------------------------
# 三、建立真正连接（此时才真正连接MySQL数据库）
#-------------------------------------------------------------------------
try:    # 创建连接对象myconn
    myconn = myengine.connect()
    print('连接数据库{}成功！'.format(DB_NAME))
except: # 如果连接失败，则给出失败提示
    print('连接数据库{}失败！'.format(DB_NAME))
    
#----------------------------------------------------------------------------
# 四、定义Raw SQL语句（删除数据记录）
#----------------------------------------------------------------------------
TABLE_NAME = 'mytable'
# SQL语句（从数据表中删除记录）
sql_str = "DELETE FROM {} WHERE name = %s".format(TABLE_NAME)
# 定义插入记录变量
val_data = ('MySQL',)

#----------------------------------------------------------------------------
# 五、执行SQL语句（删除数据记录）
#----------------------------------------------------------------------------
try:
    res_obj = myconn.execute(sql_str, val_data)
    print('从数据表{}中成功删除'.format(TABLE_NAME), res_obj.rowcount, '条数据记录！')
except: # 如果删除数据记录失败，则给出失败提示
    print('从数据表{}中删除数据记录失败！'.format(TABLE_NAME))