- mysql-connector

本文详细介绍了如何使用Python的mysql-connector库进行MySQL数据库的各种操作,包括安装配置、连接数据库、创建和查询数据库、设置主键、插入和批量插入数据、查询指定字段、使用条件语句、排序、限制查询数量、删除和更新记录以及删除表。
摘要由CSDN通过智能技术生成

mysql-connector 是 MySQL 官方提供的驱动器

  • 安装
python -m  pip install mysql-connector
  • 测试是否安装成功
import mysql-connector
  • 连接数据库
import mysql-connector
mydb=mysql.connector.connect(
	host='localhost'  #数据库主机地址
	user='root'  #数据库用户名
	passwd='123'          #数据库密码
	)
print(mydb)
  • 创建数据库
import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE runoob_db")
  • 使用 “SHOW DATABASES” 语句来查看数据库是否存在
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456"
)
 
mycursor = mydb.cursor()
 
mycursor.execute("SHOW DATABASES")
 
for x in mycursor:
  print(x)
  • 主键设置

创建表时一般会设置一个主键PRIMARY KEY
创建主键语句:INT AUTO_INCREMENT PRIMARY KEY
起始值为1,逐步递增
如果表已创建,需用ALTER TABLE来添加主键

#给 sites 表添加主键。
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor=mydb.cursor()
mycursor.excute("ALTER TABEL site ADD COLUM id INT AUTO_INCREMENT PRIMARY KEY")
#若还未创建site表
import mysql.connector
mydb=mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()
 
mycursor.execute("CREATE TABLE sites (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), url VARCHAR(255))")
  • 插入数据
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycurser=mydb,curser()
sql="INSERT INTO sites (name,url) VALUES (%s,%s)"
val = ("RUNOOB", "https://www.runoob.com")

mycurser.excute(sql,val)

mydb.commit()   #数据表内容有更新,必须使用该语句
print(mycurser,rowcount,"记录插入成功")
  • 批量插入语句
    使用excutemany()方法,第二个参数为元组列表,包含要插入的数据
import mysql.connector

mydb=mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor=mydb.cursor()

sql="INSERT INTO sites (name,url) VALUES (%s,%s)"
val=[
  ('Google', 'https://www.google.com'),
  ('Github', 'https://www.github.com'),
  ('Taobao', 'https://www.taobao.com'),
  ('stackoverflow', 'https://www.stackoverflow.com/')
]
mycursor.excutemany(sql,val)
mydb.commit()   #数据表有更新必须使用
print(mycursor.rowcount,"记录插入成功")
  • 数据插入后,想获得该记录的ID
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()

sql="INSER INTO sites (name,url) VAUES (%s,%s)"
val=("zhihu","www.zhihu.com")

sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = ("Zhihu", "https://www.zhihu.com")
mycursor.execute(sql, val)

mydb.commit()
print("1条记录已插入,ID",mycurser.lastrowid)
  • 查询数据
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()

mycurser.excute("SELECT FROM * sites")
myresult=mycurser.fetchall()    #fechall获取所有数据
for x in myresult:
	print(x)
  • 读取指定字段数据
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()
mycursor.excute("SELECT name,url FROM sites ")
myresult=mycurser.fetchall()    #获取所有记录
for x in myresult():
	print(x)
  • 读取一条数据,可以使用 fetchone()
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()
 
mycursor.execute("SELECT * FROM sites")
 
myresult = mycursor.fetchone()
 
print(myresult)
  • where 条件语句
#读取指定条件的数据,可以使用 where 语句:
import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()
 
sql = "SELECT * FROM sites WHERE name ='RUNOOB'"
 
mycursor.execute(sql)
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)
也可以使用通配符 %:
******************
sql = "SELECT * FROM sites WHERE url LIKE '%oo%'"
 
mycursor.execute(sql)
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:

sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB", )
 
mycursor.execute(sql, na)
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)
  • 排序ODER BY ,默认升序ASC,降序为DESC
sql = "SELECT * FROM sites ORDER BY name"
 
mycursor.execute(sql)
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)
  • 设置查询的数据量,可以通过 “LIMIT” 语句来指定
mycursor.execute("SELECT * FROM sites LIMIT 3")
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)
  • 也可以指定起始位置,使用的关键字是 OFFSET
mycursor.execute("SELECT * FROM sites LIMIT 3 OFFSET 1")  # 0 为 第一条,1 为第二条,以此类推
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)
  • 删除记录使用 “DELETE FROM” 语句:
sql = "DELETE FROM sites WHERE name = 'stackoverflow'"
 
mycursor.execute(sql)
 
mydb.commit()
 
print(mycursor.rowcount, " 条记录删除")
  • 注意:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除。
    为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:
sql = "DELETE FROM sites WHERE name = %s"
na = ("stackoverflow", )
 
mycursor.execute(sql, na)
 
mydb.commit()
 
print(mycursor.rowcount, " 条记录删除")
  • 更新表数据
sql="UPDATE sites SET name='ZH' WHERE name='zhihu' "
mycursor.excute(sql)
mydb.commit()
print(mycursor,rowcount,"条记录被更改")
  • 删除表
sql=”DROP TABLE IF EXISTS sites“   #删除数据表sites
mycursor.excute(sql)

http://www.runoob.com/python3/python-mysql-connector.html

mysql.connector是Python与MySQL数据库进行交互的官方驱动程序。它可以通过使用pip安装mysql-connector库来使用。在Python程序中,你可以使用mysql.connector模块来连接到MySQL数据库,并执行各种操作,比如创建数据库、查询数据等。通过指定主机地址、用户名和密码,你可以使用mysql.connector.connect()函数来建立与MySQL数据库的连接。你可以使用创建的连接对象来执行SQL语句,比如创建数据库、查询数据等。你可以使用execute()方法来执行SQL语句,并使用fetchall()方法获取查询结果。mysql.connector还提供了一些其他方法和函数,用于处理数据库连接和执行SQL语句的错误。你可以参考官方文档了解更多关于mysql.connector的用法。 [1<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [- mysql-connector](https://blog.csdn.net/qq_39643868/article/details/89458210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [mysql-connector-java详解](https://blog.csdn.net/keyboard_/article/details/114337739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值