那么,选择哪个数据库好呢?
MySQL?Oracle?PostgresSQL?云数据库?
好多选择啊,Python就内置了一个数据库福利,这里就是Sqlite(sqlite3内置库)啦。
安装sqlite3?不用!
sqlite3是python安装后的一个预装的模块,算是内置的数据库,直接导入就完啦。
下面直接看代码,保存为demo_db.py.
""" 雷学委Demo代码 """ import sqlite3 #创建数据库连接 xuewei_conn = sqlite3.connect("xuewei_jishu.db") #新建游标 cur = xuewei_conn.cursor() #下面的sql为创建数据库表tech_stack sql = """ create table tech_stack( id INT, name TEXT ); """ cur.execute(sql) cur.close()
代码加了注释了比较简单不多赘述,直接复制运行代码。
直接查看当前运行目录,发现多了一个xuewei_jishu.db
也可以用终端输入sqlite3 xuewei_jishu.db使用数据库,如下:
小白会问:内置数据库是不是可以缩写简记为内库啊?那么sqlite3 就是python的内库啊?
呵呵,学委并不想理会,同时想要扔几千行SQL过去。(开个玩笑,写SQL不要搞几千行这样很不厚道!害人害己啊!)
我们刚刚创建了数据库了, 并在数据库中创建了一个表tech_stack(小白还没有反应过来,这就搞定了?)。
我们在数据表中添加技术棧吧
保存下面代码为,demo_db_add.py
""" 雷学委Demo代码 """ import sqlite3 #创建数据库连接 xuewei_conn = sqlite3.connect("xuewei_jishu.db") #新建游标 cur = xuewei_conn.cursor() sql = """ insert into tech_stack (ID, name) values (1, "Java"), (2, "Python"), (3, "Node.JS"), (4, "Scala"); """ cur.execute(sql) #PS学委会的不止这些,这里只是展示一下,欢迎关注三连支持! xuewei_conn.commit() #PS:commit必须记得 cur.close() #也记得close
运行代码,这个不会报错的。
查看数据库表格的内容
""" 雷学委Demo代码 """ import sqlite3 #创建数据库连接 xuewei_conn = sqlite3.connect("xuewei_jishu.db") #新建游标 cur = xuewei_conn.cursor() sql = """ select * from tech_stack; """ cur.execute(sql) data = cur.fetchall() print('query result; %s' % (data)) cur.close()
运行效果如下:
练手完毕,现在创建数据库blog,同时建一个表ranklist
学委特别定制之创建数据库和表格Python代码
""" 雷学委Demo代码 """ import sqlite3 #创建数据库连接 xuewei_conn = sqlite3.connect("blog.db") #新建游标 cur = xuewei_conn.cursor() sql = """ create table ranklist( id VARCHAR(36) NOT NULL PRIMARY KEY, title TEXT, link TEXT, author TEXT, creation_time TIMESTAMP default (datetime('now','localtime')) ); """ cur.execute(sql) cur.close()
学委特别定制之添加数据,查询展示
""" 雷学委Demo代码 """ import sqlite3 import uuid #创建数据库连接 xuewei_conn = sqlite3.connect("blog.db") #新建游标 cur = xuewei_conn.cursor() fsql = """ insert into ranklist(id, title, link, author) values ('%s', '%s', '%s', '%s'); """ sql = fsql % (uuid.uuid1(), "❤️爬虫截长屏不方便阅读!推荐dominate直接生成报告❤️","https://blog.csdn.net/geeklevin/article/details/119657231", "雷学委") print("sql %s" % sql) cur.execute(sql) xuewei_conn.commit() #LEIXUEWEI温馨提示:这里记得调用commit,否则插入语句执行无效果。 sql = "select * from ranklist; " cur.execute(sql) data = cur.fetchall() print("[雷学委] 热榜文章: %s" % str(data)) cur.close()
效果如下图:
总结
我们以上完成了建库,建表,添加和查询数据几个步骤了。
Python提供的这个“内库”sqlite3是Sqlite数据库的操作接口,使用也很简单,就几分钟的事情。
比较简单,刚刚好适用来进行热榜分析了。