Crossin的编程教室

标题: sqlite3插入数据库请教 [打印本页]

作者: Aquamarine    时间: 2018-3-11 15:20
标题: sqlite3插入数据库请教
本帖最后由 Aquamarine 于 2018-3-11 15:23 编辑
  1. import sqlite3
  2. conn = sqlite3.connect('test.db')
  3. c = conn.cursor()
  4. c.execute("INSERT INTO books ('File', 'Title', 'Author(s)', 'Publisher', 'Languages', 'Published', 'Identifiers') VALUES ('(2014最新版)证券业从业资格预测三合一:证券投资分析.azw3', '(2014最新版)证券业从业资格考试讲义、真题、预测三合一:证券投资分析', '证券业从业资格考试研究中心', '中国商业出版社', 'zho', '2014-01-31T16:00:00+00:00', 'mobi-asin:B00KT06V0O')");
  5. conn.commit()
  6. print ('Records created successfully');
  7. conn.close()
复制代码
插入数据库没有问题。
  1. import sqlite3
  2. c1 = ['File', 'Title', 'Author(s)', 'Publisher', 'Languages', 'Published', 'Identifiers']
  3. c2 = ['(2014最新版)证券业从业资格预测三合一:证券投资分析.azw3', '(2014最新版)证券业从业资格考试讲义、真题、预测三合一:证券投资分析', '证券业从业资格考试研究中心', '中国商业出版社', 'zho', '2014-01-31T16:00:00+00:00', 'mobi-asin:B00KT06V0O']
  4. conn = sqlite3.connect('test.db')
  5. c = conn.cursor()
  6. c.execute("INSERT INTO books c1 VALUES c2");
  7. conn.commit()
  8. print ('Records created successfully');
  9. conn.close()
复制代码
插入数据库报错如下:
OperationalError: near "c1": syntax error

请问该如何按列表内容插入数据库?
作者: crossin先生    时间: 2018-3-11 15:43
INSERT INTO books c1 VALUES c2
你这个命令没有把 c1 c2 的值替换进去啊
作者: Aquamarine    时间: 2018-3-11 17:29
本帖最后由 Aquamarine 于 2018-3-11 17:35 编辑
crossin先生 发表于 2018-3-11 15:43
INSERT INTO books c1 VALUES c2
你这个命令没有把 c1 c2 的值替换进去啊

感谢指教,请问下替换该怎么写?
  1. c.execute("INSERT INTO books (?) VALUES (?)", (c1,c2));
复制代码
上面的写法报错:
OperationalError: near "?": syntax error

PS:并非每列都有数据插入,有些列为null,不同的记录插入的列数多少不同。
作者: crossin先生    时间: 2018-3-12 16:39
Aquamarine 发表于 2018-3-11 17:29
感谢指教,请问下替换该怎么写?上面的写法报错:

PS:并非每列都有数据插入,有些列为null,不同的记录 ...

看前面的基础课程 字符串格式化




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5