利用sqlite3创建数据库

参考

https://blog.csdn.net/qq_36482772/article/details/53458400

书写

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001388320596292f925f46d56ef4c80a1c9d8e47e2d5711000

注意:

1)sqlite3如何获取字典数据:

参考官方文档,先定义一个字典函数dict_factory

def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d

链接数据库:

con = sqlite3.connect('fcy.db')
con.row_factory = dict_factory
cursor = con.cursor()

2)插入数据时,pymysql使用%s代替变量

但是sqlite3中,使用?代表变量

例如:

con = sqlite3.connect('fcy.db')
con.row_factory = dict_factory
cursor = con.cursor()
cursor.execute('insert into claes(id,name) values (3,?)',[name,])
con.commit()
cursor.close()
con.close()

如何把tableA中的字段oldColumn修改为newColumn(https://juejin.im/post/5a77b43f5188257a7a2da207)

解决方法:

  1. 在tableA中添加字段newColumn
ALTER TABLE tableA ADD COLUMN newColumn INTEGER
复制代码
  1. 将旧字段oldColumn的值赋值给新字段newColumn
UPDATE tableA SET newColumn = oldColumn
复制代码
  1. 删除旧字段oldColumn ALTER TABLE tableA DROP COLUMN oldColumn 然后到第三步你会发现又被SQLite坑了:SQLite无法删除字段!!

第3步解决办法:(依旧是迂回政策)
3.1. 先创建备份表tableA_backup将tableA数据备份

CREATE TEMPORARY TABLE tableA_backup(id INTEGER PRIMARY KEY AUTOINCREMENT, newColumn INTEGER)
复制代码

3.2 将原表tableA中的数据对应的复制到tableA_backup表中

INSERT INTO tableA_backup SELECT id, newColumn FROM tableA
复制代码

不要将旧字段oldColumn复制过去,备份表tableA_backup中没有oldColumn字段
3.3 此时实际已经得到了改过字段名的表:tableA_backup,然后将原表tableA删掉

DROP TABLE tableA
复制代码

3.4 然后创建表tableA

CREATE TABLE tableA(id INTEGER PRIMARY KEY AUTOINCREMENT, newColumn INTEGER)
复制代码

3.5 再把备份表tableA_backup中的数据复制到tableA中

INSERT INTO tableA SELECT id, newColumn FROM tableA_backup
复制代码

3.6 把备份表tableA_backup删除,Have done!

DROP TABLE tableA_backup
复制代码

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值