- mysql-connector

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

猜你喜欢

转载自blog.csdn.net/qq_39643868/article/details/89458210
今日推荐