sqlite数据库中的数据输入

时间:2016-08-17 18:41:49

标签: python sqlite

我是一个新用户,我还不擅长编码。我创建了一个包含3列的数据库:(date, station, pcp )。 l设置41_years_data并使用for循环,我想在数据库中插入这些数据集。我无法正确地做到这一点。当我运行代码时,它给出了

"c.execute("INSERT INTO pcp VALUES(kdm,station,klm)")
sqlite3.OperationalError: no such column: kdm" error.
我试了一下但没有工作。

我的代码在

下面
import sqlite3
from datetime import date, datetime, timedelta

conn=sqlite3.connect("pcp.db")
c=conn.cursor()

pcp=open("p.txt")

station="1"

def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS pcp (date DATE,stations TEXT,pcp DOUBLE)")

def perdelta(start, end, delta):
    curr = start
    while curr < end:
        yield curr
        curr += delta

def data_entry():
    for i in pcp:
        k=print(i)
def data_entry2():
    for a in perdelta(date(1979, 1, 1), date(2015, 1, 1), timedelta(days=1)):
        b=print(a)

def dyn():
    kdm=data_entry2()
    klm=data_entry()
    c.execute("INSERT INTO pcp(date,stations,pcp) VALUES(?,?,?)",( kdm,station,klm ))
    conn.commit()

create_table()
dyn()

2 个答案:

答案 0 :(得分:0)

我解决了这个问题并且它将日期,站点和pcp的值插入到pcp列中但是我必须使用范围(1000(仅用于试用号码))。是否有任何建议使我的代码更好?

import sqlite3
from sqlite3 import *

from datetime import date, datetime, timedelta

conn=sqlite3.connect("pcp.db")
c=conn.cursor()

pcp=open("p.txt")
prr=open("date.txt","w")
station="1"
date_pcp=[]
pcp_values=[]

def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS pcp (date DATE,stations TEXT,pcp DOUBLE)")

def perdelta(start, end, delta):
    curr = start
    while curr < end:
        yield curr
        curr += delta

def data_entry():
    for i in pcp:
        pcp_values.append(i)

def data_entry2():
    for a in perdelta(date(1979, 1, 1), date(2014, 7, 31), timedelta(days=1)):
        date_pcp.append(a)




def dyn():
    data_entry2()
    data_entry()
    for l in range(1000):
        kdm=date_pcp[l]
        klm=pcp_values[l]
        c.execute("""INSERT INTO pcp(date,stations,pcp) VALUES(?,?,?)""",( kdm,station,klm ))
        conn.commit()










create_table()
dyn()

答案 1 :(得分:-6)

您的INSERT声明

c.execute("INSERT INTO pcp VALUES(kdm,station,klm)")

包含保存数据值的变量名称。

您需要通过连接这些变量中的值来构造INSERT语句。像这样。 (也许有一种更有效的方法,但我对python不太熟悉。)

insert_sql = 'INSERT INTO pcp(date,stations,pcp) VALUES( ' + kdm + ',' + station + ',' + klm + ')'
c.execute(insert_sql)

同时尝试找出查询参数而不是字符串连接,正如 @colonel Thirty 所述,您可能会将自己暴露给SQL注入。想想 Bobby Tables

enter image description here