Python 的 PyMySQL
库是一个 MySQL 数据库客户端库,它遵循 MySQL 的原生协议,提供了连接、操作MySQL数据库的功能。使用 PyMySQL
,开发者可以在Python程序中方便地执行SQL语句,进行数据的增删改查。它支持多线程操作,提供了丰富的接口来处理数据库事务,适用于Web开发、数据迁移、自动化脚本等多种场景,是Python与MySQL数据库交互的重要工具。
pip install pymysql
db = pymysql.connect(host="localhost",user="root", password="123456", port=3306)
cursor = db.cursor() # 获得指针
cursor.execute("SQL语句") # 执行
db.commit() # 提交
cursor.close() # 关闭光标对象
db.close() # 关闭数据库连接
db = pymysql.connect(host="localhost",user="root", password="123456", port=3306)
cursor = db.cursor()
data = {
"id": "20151001",
"name": "ken",
"age": 24
}
table = "students"
keys = ", ".join(data.keys())
values = ", ".join(["%s"] * len(data))
sql = "INSERT INTO {table}({keys}) VALUES ({values})".format(table=table, keys=keys, values=values)
try:
if cursor.execute(sql, tuple(data.values())):
print("Successful")
db.commit()
except:
print("Failed")
db.rollback()
cursor.close()
db.close()
连接数据库
获得指针
数据
数据表
获得所有键
获得所有值
组合SQL语句
尝试
execute运行
提交
如果失败
回滚
关闭指针
关闭数据库
sql注入就是只要自己拼完全部sql的话就不行
更好的是自己写一个验证类
import pymysql
conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="db_name")
cursor = conn.cursor()
id = 1
name = "名字"
sql = "select id, name from db_table where id=%s and name=%s"
try:
row_count=cursor.execute(sql ,(id,name))
rs=cursor.fetchall()
for r in rs:
print (r)
except Exception as e:
print(e)
print("no")
db.rollback()
cursor.close()
db.close()
sql = "select id, name from %s where id=%s and name=%s"
try:
row_count=cursor.execute(sql, (db_table, id, name))
这是pymysql的原因
暂时的解决方法
查一下自己的数据库有什么表
然后对比一下