标签:任务 生成器 ack 直接 必须 into port inpu delete
导入:import pymysql
连接数据库:conn=pymysql.connect(host="",user="",password="",database="")
创建游标:cur=conn.cursor()
使用pymysql进行查询:cur.execute("mysql语句")
注意:查询语句必须添加双引号,查询语句和mysql的语句一样,没有区别
获取查询到的数据
获取一条数据
可以使用循环连续获取数据
获取多条数据
num是指定的获取数据条数
获取全部的数据
为了避免语句执行中存在错误导致出现程序异常,需要做异常处理pymysql.err.ProgrammingError,as e后可以把e打印出来显示异常的具体内容
try:
程序
except pymysql.err.ProgrammingError as e:
print(e)
关闭游标:cur.close()
关闭数据库连接:conn.close()
import pymysql
conn=pymysql.connect(host="127.0.0.1",user="root",
password="930215",
database="department_data")
# 创建cursor游标
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
try:
cur.execute("select * from employee")
# cur.execute获取到的查询结果并不能直接显示出来,必须另外获取,这个用法类似于
# 生成器的用法
# cur.fetchone()只能获取一条数据
ret_one = cur.fetchone()
print(ret_one)
# cur.fetchmany(num)指定获取的数据个数
ret_many = cur.fetchmany(3)
print(ret_many)
# cur.fetchall()获取所有的查询数据
ret_all = cur.fetchall()
print(ret_all)
except pymysql.err.ProgrammingError as e:
print(e)
cur.close()
conn.close()
写入、更新和删除数据数据
‘‘‘插入数据‘‘‘
try:
cur.execute("insert into employee(ename,eage,depart_id,etime) values(‘夏侯淳‘,25,103,now())")
conn.commit()
except Exception as e:
print(e)
conn,rollback()
注意:如果只是写了插入的语句,那么就只是把数据写入到内存中,并没有写入磁盘,必须使用conn.commit()进行提交,是conn不是cur这点也需要特别注意
在execute中也可以进行数据表的创建和删除任务
查询一共有多少行数据被影响:print(cur.rowcount)
在执行sql语句后可以使用cur.rowcount来获取总共有几行数据被影响,然后通过循环获取每一个数据
cur.execute("select * from employee")
for i in range(cur.rowcount):
ret = cur.fetchone()
print(ret)
注意:这里的拼接语句中的字符串后不要直接写拼接的内容,要把拼接的内容放在执行语句中,如果直接拼接的会可能造成sql注入问题,威胁到数据库的安全,这里必须要特别注意。
执行语句:cur.execute(sql,(拼接内容1,拼接内容2))
获取查询的内容
关闭游标:cur.close()
关闭连接:conn.close()
import pymysql
username = input("mysql用户名:")
password = input("mysql密码:")
conn = pymysql.connect(host="localhost",
user="root",
password="930215",
database="department_data")
cur = conn.cursor()
sql = "select * from userinfo where username=%s and password=%s"
# 这里不能直接拼接
cur.execute(sql,(username,password))
# 执行语句这里拼接,并且是括号,拼接内容和sql内容要使用逗号隔开
ret = cur.fetchone()
print(ret)
cur.close()
conn.close()
标签:任务 生成器 ack 直接 必须 into port inpu delete
原文地址:https://www.cnblogs.com/ddzc/p/12661619.html