import mysql.connector
# 数据库链接
mydb = mysql.connector.connect(
host="localhost", # 数据库主机地址
user="root", # 数据库用户名
passwd="root", # 数据库密码
database ='hello', #使用数据库
buffered =True #游标,防止同一链接时,出现报错
)
# 打印链接信息,若链接不上则报错
print(mydb)
def ShowData(mycursor):
for x in mycursor:
print(x)
# 数据库查询命令
def Select_Command(str_command):
try:
mycursor = mydb.cursor()
mycursor.execute(str_command)
return mycursor
except mysql.connector.errors.ProgrammingError:
print('命令错误!!!!')
#更新单条数据和多条数据
def SQL_update(Select_SQL, Sql_value):
try:
mycursor = mydb.cursor()
mycursor.execute(Select_SQL, Sql_value)
mydb.commit() # 数据内容更新,需要加上此函数
print('数据插入成功')
print('数据已经记录,记录id为:', mycursor.lastrowid)
return mycursor
except mysql.connector.errors.ProgrammingError:
mycursor = mydb.cursor()
mycursor.executemany(Select_SQL, Sql_value)
mydb.commit() # 数据内容更新,需要加上此函数
print('数据已经记录,记录id为:', mycursor.lastrowid) #记录最后一次添加的id信息
# 查询数据库
Select_Command("show databases")
# 使用hello数据库
#Select_Command("use hello")
# 创建数据库表
Select_Command('create table sites (name Varchar(255), url varchar(255)) ')
# 设置主键
Select_Command('alter table sites add column id int auto_increment primary key')
# 添加数据
select_sql = 'insert into sites (name,url) values (%s,%s) '
#设置单条数据
val = ('百度', 'https://www.baidu.com')
#设置多条数据,用元组表示
val3 = [('百度', 'https://www.baidu.com'),
('腾讯', 'https://www.qq.com'),
('新浪', 'https://www.sina.com')
]
#单条数据插入
SQL_update(select_sql, val)
#多条数据插入
SQL_update(select_sql, val3)
#查询所有数据
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchall() # fetchall() 获取所有记录函数
ShowData(myresult)
#where条件语句
sql = "select * from sites where name = '百度'" #条件语句
mycursor.execute(sql) #执行查询动作
myresult =mycursor.fetchall() #查询满足条件的所有数据
ShowData(myresult) #展示所有数据
#使用通配符,like语句
sql = "select * from sites where url like '%qq%'" #条件语句
mycursor = mydb.cursor()
mycursor.execute(sql) #执行查询动作
myresult =mycursor.fetchall() #查询满足条件的所有数据
ShowData(myresult) #展示所有数据
#为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:
sql = "select * from sites where name = %s" #条件语句
na = ("sina", )
mycursor = mydb.cursor()
mycursor.execute(sql,na)
myresult =mycursor.fetchall() #查询满足条件的所有数据
ShowData(myresult) #展示所有数据
#数据排序升序
sql = "select * from sites order by id" #条件语句
mycursor = mydb.cursor()
mycursor.execute(sql)
myresult = mycursor.fetchall()
ShowData(myresult)
#数据排序降序
sql = "select * from sites order by id desc" #条件语句
mycursor = mydb.cursor()
mycursor.execute(sql)
myresult = mycursor.fetchall()
ShowData(myresult)
#设置查询的数据量
sql = "select * from sites limit 10" #条件语句
mycursor = mydb.cursor()
mycursor.execute(sql)
myresult = mycursor.fetchall()
ShowData(myresult)
#设置从指定位置查询指定数据量
sql = "select * from sites limit 10 offset 20" #条件语句
mycursor = mydb.cursor()
mycursor.execute(sql)
myresult = mycursor.fetchall()
ShowData(myresult)
print('------------------------')
#删除语句 删除语句后,需要更新数据
sql = "delete from sites where name ='百度'" #条件语句6
mycursor = mydb.cursor()
mycursor.execute(sql)
mydb.commit() #数据更新
print(mycursor.rowcount, "条记录被删除") #计算多少条记录被操作
sql = "select * from sites" #查询所有语句
mycursor.execute(sql) #数据更新
myresult = mycursor.fetchall() #数据更新完在获取数据
ShowData(myresult)
#更新表数据,update函数
sql = "update sites set name = %s where name = %s" #条件语句
val = ("xinlang", "新浪") #定义需要修改的值以及原有的值
mycursor = mydb.cursor()
mycursor.execute(sql, val) #查询数据
mydb.commit() #更新数据
#查看更新后的数据
sql = "select * from sites" #查询所有语句
mycursor.execute(sql) #数据更新
myresult = mycursor.fetchall() #数据更新完在获取数据
ShowData(myresult)
# #删除表操作
# sql = "drop table if exists sites" #条件语句,删除数据表
# mycursor = mydb.cursor()
# mycursor.execute(sql)