使用原生SQL语句进行操作
首先要通过pymysql进行数据库的链接
import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) // 创建游标,指向数据库中的数据。
sql = 'select * from *****' // 要执行的SQL语句
下面是对表进行数据的操作。
-
查询操作
import pymysql conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建游标,并返回一个字典格式的数据 sql = "select * from user_info where username=%s and pwd=%s;" cursor.execute(sql,(username,pwd)) # 执行SQL,返回受影响行数,使用这种方式可以防止SQL注入 //class_list = cursor.fetchone() # 获取上一步corsor得到的数据中的第一条数据。 class_list = cursor.fetchall() # 获取上一步corsor获取到的所有的数据 cursor.close() conn.close()
-
添加操作
username = input('username:') pwd = input('pwd:') sql = "insert into user_info(username,pwd) values(%s,%s);" ret = cur.execute(sql, (username, pwd)) // 批量插入 // val = [ // ('Google', 'https://www.google.com'), // ('Github', 'https://www.github.com'), // ('Taobao', 'https://www.taobao.com'), // ('stackoverflow', 'https://www.stackoverflow.com/') // ] // sql = "INSERT INTO sites (name, url) VALUES (%s, %s)" // mycursor.executemany(sql, val) // 房主SQL注入 conn.commit() # 必须有提交这一步 if ret: print(ret) print('插入成功') else: print('插入失败') cur.close() conn.close()
-
删除操作
注意防止SQL注入攻击import pymysql conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "DELETE FROM sites WHERE name = 'stackoverflow'" mycursor.execute(sql) // 有可能被SQL注入 mydb.commit() print(mycursor.rowcount, " 条记录删除")
import pymysql conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "DELETE FROM sites WHERE name = 'stackoverflow'" na = ("stackoverflow", ) mycursor.execute(sql, na) // Django后台会防止SQL注入 mydb.commit() print(mycursor.rowcount, " 条记录删除")
-
更新操作
import pymysql conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "UPDATE sites SET name = %s WHERE name = %s" val = ("Zhihu", "ZH") mycursor.execute(sql, na) // Django后台会防止SQL注入 mydb.commit() print(mycursor.rowcount, " 条记录删除")