一、pymysql
1、pymysql是支持py3.X的mysql连接库
2、安装pymysql:pip install pymysql
3、连接数据库需要服务器host
二、代码
1、连接数据库
def connetSql(databaseName):
sqlConnect = pymysql.connect( # 连接数据库服务器
user="root",
password="123456",
host="127.0.0.1", // IP地址
database=databaseName,
charset="utf8"
)
conn = sqlConnect.cursor() # 创建操作游标
return conn, sqlConnect
2、数据库中清除指定的phone行
if userName.isdigit():
# 从mobile中清除手机号
databaseUse = 'passport'
db = connetSql(databaseUse)
conn = db[0]
database = db[1]
sql_2 = 'delete from mobile where mobile=' + "'" + str(userName) + "'"
print(sql_2)
conn.execute(sql_2)
conn.execute('commit')
database.close()
conn.close()
注意,sql语句是select 这类的语句时,可以不用加conn.execute('commit'),但是涉及到修改数据库的操作,如delete、drop、insert时,必需要加语句conn.execute('commit')
三、错误记录
1、IndexError: tuple index out of range
提示该错误出现于执行sql语句时,解决方法是把原来的
select user_id from account_8 where username=test10086
改为:
select user_id from account_8 where username='test10086' # 筛选值前后加上" ' "
2、invalid literal for int() with base 10: 'd'
此错误出现在判断字符值时,解决方法是改用正则匹配判断:
if re.findall(r"[0-8]", str(useData)):
3、IndexError: tuple index out of range
此错误出现在:
getBack2 = conn2.fetchall()
useId = getBack2[0][0]
原因是没有考虑到返回值不存在的情况,当sql查找的值不存在表中时,报错。解决方法为:
getBack2 = conn2.fetchall()
if getBack2:
useId = getBack2[0][0]
// 当然,之后还需要加else补充句