欢迎访问宙启技术站
智能推送

Python中10个用于数据库操作的函数

发布时间:2023-05-21 17:22:13

Python是一门流行的高级编程语言,其广泛用于各种各样的应用程序中,包括与数据库的交互。Python的强大之处在于其提供了许多用于数据库操作的函数。本文将探讨Python中10个用于数据库操作的函数。

1. connect()

connect()函数用于与数据库建立连接。这个函数需要参数来指定数据库的位置、数据库名称、用户名和密码。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

在这个代码示例中,我们使用了MySQL数据库,并通过指定连接的主机、用户名、密码和数据库名称来与数据库建立连接。

2. cursor()

cursor()函数用于建立与数据库的交互。该函数实现了数据库的查询和修改操作。在连接到数据库之后,我们可以使用cursor()函数创建一个新的游标对象,并使用它来执行查询和修改操作。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

在这个代码示例中,我们创建了一个游标对象,用于与数据库进行交互。

3. execute()

execute()函数用于执行SQL语句。在游标对象上调用execute()函数,并将SQL语句作为参数传递给它即可执行SQL语句。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

在这个代码示例中,我们使用了execute()函数来执行SQL查询语句。

4. fetchall()

fetchall()函数用于获取SQL查询结果。在执行SQL查询之后,我们可以使用fetchall()函数获取所有结果。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

在这个代码示例中,我们使用了fetchall()函数来获取SQL查询结果,并使用for循环遍历结果集并将结果打印出来。

5. fetchone()

fetchone()函数用于获取SQL查询结果的一行。在执行SQL查询之后,我们可以使用fetchone()函数获取一行结果。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchone()

print(myresult)

在这个代码示例中,我们使用了fetchone()函数来获取SQL查询结果中的 行。

6. commit()

commit()函数用于提交数据库的修改操作。在执行对数据库进行修改的命令后,我们需要调用commit()函数才能将这些修改提交到数据库。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("INSERT INTO customers (name, address) VALUES (%s, %s)", ("John", "Highway 21"))

mydb.commit()

print(mycursor.rowcount, "record inserted.")

在这个代码示例中,我们使用了commit()函数来提交一次插入操作,并使用rowcount属性获取插入的行数。

7. rollback()

rollback()函数用于撤销数据库的修改操作。当发生错误时,我们可以使用rollback()函数来撤消对数据库的修改。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

try:
  mycursor.execute("INSERT INTO customers (name, address) VALUES (%s, %s)", ("John", "Highway 21"))

  mydb.commit()

except:
  mydb.rollback()

在这个代码示例中,我们使用了try-except结构和rollback()函数来捕获错误并撤销之前的数据库修改操作。

8. executemany()

executemany()函数在游标对象上执行多个SQL查询。它可用于多次执行相同的SQL查询或在使用相同的SQL查询时插入多个记录。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
  ('Peter', 'Lowstreet 4'),
  ('Amy', 'Apple st 652'),
  ('Hannah', 'Mountain 21'),
  ('Michael', 'Valley 345'),
  ('Sandy', 'Ocean blvd 2'),
  ('Betty', 'Green Grass 1'),
  ('Richard', 'Sky st 331'),
  ('Susan', 'One way 98'),
  ('Vicky', 'Yellow Garden 2'),
  ('Ben', 'Park Lane 38'),
  ('William', 'Central st 954'),
  ('Chuck', 'Main Road 989'),
  ('Viola', 'Sideway 1633')
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "records inserted.")

在这个代码示例中,我们使用了executemany()函数来插入多条记录,将SQL语句和数据作为参数传递给它。

9. callproc()

callproc()函数用于执行存储过程。存储过程可以是数据库中事先定义好的操作序列。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE PROCEDURE get_customers (IN name VARCHAR(255)) BEGIN SELECT * FROM customers WHERE name = name; END;")

mycursor.callproc("get_customers", ("John",))

for result in mycursor.stored_results():
  print(result.fetchall())

在这个代码示例中,我们首先创建了一个存储过程,它可以根据传入的参数返回匹配的结果。然后,我们使用callproc()函数执行存储过程,并使用stored_results()函数来检索返回的结果。

10. executetransaction()

executetransaction()函数用于在数据库事务中执行多个SQL查询。它可用于在多个查询之间建立原子性和边界性。下面是一个示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("Michelle", "Blue Village")

mycursor.execute("START TRANSACTION")

mycursor.execute(sql, val)

print("Record inserted, ID:", mycursor.lastrowid)

mydb.rollback()

在这个代码示例中,我们使用了START TRANSACTION语句来开始一个新的事务,并使用rollback()函数撤消了我们提交的修改。