Python MySQL 操作

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)

  

posted @ 2021-06-02 20:32  神迹丶  阅读(38)  评论(0编辑  收藏  举报
网站已运行: