参考
https://blog.csdn.net/qq_36482772/article/details/53458400
书写
注意:
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)
解决方法:
- 在tableA中添加字段newColumn
ALTER TABLE tableA ADD COLUMN newColumn INTEGER
复制代码
- 将旧字段oldColumn的值赋值给新字段newColumn
UPDATE tableA SET newColumn = oldColumn
复制代码
- 删除旧字段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 复制代码