python数据库操作sqlite_Python操作mysql和sqlite
python中使用模塊包裝了mysql和sqlite數(shù)據(jù)庫的操作,實現(xiàn)方法基本相同,實現(xiàn)步驟為:
1、創(chuàng)建connection對象
2、創(chuàng)建cursor(游標)對象
3、通過cursor(游標)對象操作數(shù)據(jù)庫
4、通過connection對象關(guān)閉數(shù)據(jù)庫連接、提交事務及回滾等
操作mysql的模塊:python3中使用mysql-connector模塊(官方出品)或PyMySQL模塊(python2中使用mysqldb)
mysql-connector模塊:
模塊安裝:pip install mysql-connector
引入模塊:import mysql.connector
創(chuàng)建connection對象:
mydb = mysql.connector.connect(
host="localhost",
user="username",
passwd="password",
database="db_name"
)
PyMySQL模塊:
模塊安裝:pip install PyMySQL
引入模塊:import pymysql
創(chuàng)建connection對象:
mydb = pymysql.connect("localhost","username","password","db_name")
操作sqlite的模塊:python使用sqlite3模塊連接sqlite
Python 2.5.x以上版本標準庫中默認自帶了sqlite3模塊,無需安裝
引入模塊:import sqlite3
創(chuàng)建connection對象:
sqlite3.connect(database[,timeout=5.0,])
database使用":memory:"可以在RAM中打開,而不是在磁盤上打開。如果給定的數(shù)據(jù)庫不存在,則創(chuàng)建一個數(shù)據(jù)庫。
cursor(游標)對象:
上面我們通過各自模塊的各自方法創(chuàng)建了connection對象(本文的示例中為mydb)
創(chuàng)建cursor(游標)對象:mycursor = connection.cursor()
執(zhí)行sql語句:cursor.execute(sql)
在mysql-connector和PyMySQL模塊中僅支持位置占位符,占位符用"%s"
mycursor.execute("INSERT INTO VALUES (%s, %s)", ("name", 20))
在sqlite3模塊中支持位置占位符(占位符用"?")和命名占位符
mycursor.execute("INSERT INTO VALUES (?,?)", ("name", 20))
mycursor.execute("INSERT INTO VALUES (:name,:age)",{'name':'myname','age':20})
批量執(zhí)行sql語句:cursor.executemany(sql,values)
該方法sql語句中使用占位符,values是一個元祖組成的列表
sql = "INSERT INTO user(name, age) VALUES(%s, %s)" //操作mysql的"%s"占位符
"INSERT INTO user(name, age) VALUES(?,?)" //操作sqlite的"?"占位符
val = [
('name1', 20),
('name2', 21),
('name_n', 22)
] //如果sql語句中使用了命名占位符,則val為字典組成的列表
mycursor.executemany(sql, val)
獲取查詢記錄:
cursor.fetchone():獲取結(jié)果集下一行(返回一個元祖),當沒有更多可用的數(shù)據(jù)時返回None。
cursor.fetchmany([size=1]):嘗試獲取由size指定的盡可能多的行(返回一個元祖組成的列表)。
cursor.fetchall():獲取查詢結(jié)果集中所有(剩余)的行(返回一個元祖組成的列表)。
屬性值:
獲取最后一條插入語句插入數(shù)據(jù)的id:mycursor.lastrowid
獲取最后一條操作語句影響的行數(shù):mycursor.rowcount
connection對象:
connection.commit():提交當前的事務。
connection.rollback():回滾自上一次調(diào)用commit()以來對數(shù)據(jù)庫所做的更改
connection.close():關(guān)閉數(shù)據(jù)庫連接。該操作不會自動調(diào)用commit()
sqlite3模塊特有都方法:
cursor.executescript(sql_script):執(zhí)行用分號";"隔開都多個SQL語句,該方法首先執(zhí)行commit()提交事務,然后執(zhí)行sql_script
connection.execute(sql):cursor.execute(sql)方法的快捷方式,它通過調(diào)用cursor方法創(chuàng)建了一個中間的cursor對象,然后通過給定的參數(shù)調(diào)用cursor的execute方法。
connection.executescript(sql_script):cursor.executescript(sql_script)方法的快捷方式,調(diào)用原理同上。
connection.total_changes():返回自數(shù)據(jù)庫連接打開以來被修改、插入或刪除的數(shù)據(jù)庫總行數(shù)。
最后編輯:2019-07-17作者:qingheluo
這個作者貌似有點懶,什么都沒有留下。
總結(jié)
以上是生活随笔為你收集整理的python数据库操作sqlite_Python操作mysql和sqlite的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python输出日志到文件_【已解决】P
- 下一篇: exists用法_SQL中的ALL、AN