1. 连接到数据库
python import sqlite3
# 连接到SQLite数据库(如果不存在,则创建它)
conn = sqlite3.connect('example.db')
2. 创建游标对象
游标对象用于执行SQL命令和获取结果。
python# 创建一个游标对象
cursor = conn.cursor()
3. 创建表
使用execute
方法执行SQL命令来创建表。
pythoncursor.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
age INTEGER
)''')
# 提交事务
conn.commit()
4. 插入数据
使用execute
方法插入数据到表中。
python# 插入单条数据
cursor.execute("INSERT INTO users (name, email, age) VALUES (?, ?, ?)", ("Alice", "alice@example.com", 30))
# 插入多条数据
data = [
("Bob", "bob@example.com", 25),
("Charlie", "charlie@example.com", 35)
]
cursor.executemany("INSERT INTO users (name, email, age) VALUES (?, ?, ?)", data)
# 提交事务
conn.commit()
5. 查询数据
使用execute
方法执行查询,并使用fetchall
、fetchone
或fetchmany
获取结果。
python# 查询所有数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
# 查询特定条件的数据
cursor.execute("SELECT * FROM users WHERE age > ?", (25,))
rows = cursor.fetchall()
for row in rows:
print(row)
6. 更新数据
使用execute
方法更新表中的数据。
python# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (31, "Alice"))
conn.commit()
7. 删除数据
使用execute
方法删除表中的记录。
python# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ("Bob",))
conn.commit()
8. 关闭连接和游标
完成数据库操作后,记得关闭游标和连接。
python# 关闭游标和连接
cursor.close()
conn.close()
注意事项:
- 使用参数化查询(如上面的
?
占位符)可以防止SQL注入攻击。 - 在执行插入、更新或删除操作后,通常需要调用
commit
方法来提交事务,以确保更改被保存到数据库中。 - 使用
with
语句可以确保即使在发生异常时也能正确关闭游标和连接。
pythonwith sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
# 执行你的SQL命令...
# ...
# 不需要显式关闭cursor和连接,with语句会自动处理
这些只是数据库操作的基础。在实际应用中,你可能还需要处理更复杂的情况,如事务管理、错误处理、连接池等。此外,对于大型项目或复杂的数据库交互,通常会使用ORM(对象关系映射)库如SQLAlchemy来简化操作。
from pymysql import Connection
conn1=Connection(
host="localhost",
port=3306,
user="root",
password="a111111",
autocommit=True #自动提交
)
print(conn1.get_server_info())
cursor=conn1.cursor() #获取游标对象 用于非查询sql语句
conn1.select_db("world") #数据库对象 选择数据库
#cursor.execute("create table teacher(id int,name varchar(20));") #使用cursor对象的execute()方法,执行SQL命令
cursor.execute("select name from city") #查询语句 通过cursor对象的fetchall()方法获取查询结果,返回元组
ren=cursor.fetchall()
print(ren)
cursor.execute("insert into teacher values(102,'苍老师');")
conn1.commit()#数据插入必须通过连接对象的commit()方法确认提交,不然不生效 或者在链接对象参数中使用 autocommit=True
conn1.close()