Python库sqlite2mysql_Python数据库访问之SQLite3、Mysql

现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql。

SQLite 3

SQLite 3是Python 3预装的、相当完备、无需配置的基于SQL的数据库管理系统。要使用SQLite,只需导入sqlite3库,并使用Python标准化数据库API来编程,而不用处理其他工作,比如:安装数据库、配置等等。

Python数据库API 提供了一种标准机制,可以针各种各样的数据库管理系统,包括SQLite。不管使用什么后台数据库,代码所遵循的过程都是一样的:连接 -> 创建游标 -> 交互(利用游标,使用SQL管理数据)->提交/回滚 ->关闭

示例1:

48304ba5e6f9fe08f3fa1abda7d326ab.png

#导入你需要的库

importsqlite3#1、建立与数据库的连接

connection=sqlite3.connect('test.db');#2、创建数据游标

cursor=connection.cursor()#3、执行一些SQL操作

cursor.execute("""select date('NOW')""")print(cursor.fetchone())#4、提交所做的修改,使修改永久保留

connection.commit()#5、完成时关闭链接

connection.close()

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

('2013-06-26',)

示例2:

创建数据库 -> 插入数据 -> 查询

48304ba5e6f9fe08f3fa1abda7d326ab.png

importsqlite3

db='test.sqlite' #数据库名

drop_table_sql="drop table if exists books;"create_table_sql="""create table books(

id integer primary key autoincrement unique not null,

name text not null,

price integer,

publish_date date not null

);"""connection=sqlite3.connect(db)

cursor=connection.cursor()#创建数据库

cursor.execute(drop_table_sql)

cursor.execute(create_table_sql)#插入数据

insert_sql="insert into books (name,price,publish_date) values (?,?,?)"#? 为占位符

cursor.execute(insert_sql,('java',123.23,'2012-12-03'))

cursor.execute(insert_sql,('C++',83.23,'2013-02-03'))

connection.commit()#查询

select_sql = "SELECT * FROM books"cursor.execute(select_sql)#返回一个list,list中的对象类型为tuple(元组)

data=cursor.fetchall()for t indata:print(t)

connection.close()

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

(1, 'java', 123.23, '2012-12-03')

(2, 'C++', 83.23, '2013-02-03')

Mysql

Mysql是非常流行的开源关系性数据库。

要使用Python访问Mysql,需要一个连接库,即对Python DB API的一个实现,相当于JAVA中的MySQL的JDBC Driver。其中比较著名就是MySQLdb(Django项目使用它),不过,目前MySQLdb并不支持python3.x。我们只能采用其他连接库,MySQL官方已经提供了MySQL连接器,而且已经有支持Python3.x的版本了。

MySQL Connector/Python enables Python programs to access MySQL databases, using an API that is compliant with the Python DB API version 2.0。

关于MySQL Connector/Python的各种介绍、安装、API等文档,请参考官网:http://dev.mysql.com/doc/connector-python/en/index.html

示例:

48304ba5e6f9fe08f3fa1abda7d326ab.png

importmysql.connectorimportsys, os

user= 'root'pwd= '123456'host= '127.0.0.1'db= 'test'connection= mysql.connector.connect(user=user, password=pwd, host=host, database=db)

cursor=connection.cursor()#创建数据库表

drop_table_sql="drop table if exists person;"create_table_sql= """CREATE TABLE person(

id int(10) AUTO_INCREMENT PRIMARY KEY,

name varchar(20),

age int(4)

)CHARACTER SET utf8;"""

try:

cursor.execute(drop_table_sql)

cursor.execute(create_table_sql)exceptmysql.connector.Error as err:print("create table 'mytable' failed.")print("Error: {}".format(err.msg))

sys.exit()#插入数据

insert_sql = 'INSERT INTO person(name, age) VALUES (%s,%s)'

try:

cursor.execute(insert_sql,('Jay', 22))

cursor.execute(insert_sql,('Tony', 26))

cursor.execute(insert_sql,('邵',24))exceptmysql.connector.Error as err:print("insert table 'mytable' failed.")print("Error: {}".format(err.msg))

sys.exit()#查询数据

select_sql = "SELECT * FROM person"

try:#cursor.execute() 返回 None; 执行SQL后的信息存储在cursor对象内。

cursor.execute(select_sql)#获取一条记录,每条记录做为一个tuple(元组)返回

data=cursor.fetchone()print(data)#获取2条记录,注意由于之前执行有了fetchone(),所以游标已经指到第二条记录了,也就是从第二条开始的2条记录

data=cursor.fetchmany(2)print(data)

cursor.execute(select_sql)#获取所有结果

data=cursor.fetchall()print(data)

cursor.execute(select_sql)#获取所有结果

for (id, name, age) incursor:print("ID:{} Name:{} Age:{}".format(id, name, age))exceptmysql.connector.Error as err:print("query table 'mytable' failed.")print("Error: {}".format(err.msg))

sys.exit()

connection.commit()

cursor.close()

connection.close()

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

(1, 'Jay', 22)

[(2, 'Tony', 26), (3, '邵', 24)]

[(1, 'Jay', 22), (2, 'Tony', 26), (3, '邵', 24)]

ID:1 Name:Jay Age:22

ID:2 Name:Tony Age:26

ID:3 Name:邵 Age:24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值