5

私のコードはエラーなしで正常に実行されているようですが、何も入っていない空のデータベース ファイルが作成されるだけです。ここで何が間違っているのかわかりません。

import sqlite3 as lite
import sys
con = lite.connect('test43.db')

def create_db():
    with con:
        cur = con.cursor()
        cur.execute("DROP TABLE IF EXISTS Contacts")
        cur.execute("CREATE TABLE Contacts (First Name TEXT, Last Name TEXT, Phone TEXT, Email TEXT);")
        cur.execute("INSERT INTO Contacts VALUES (?, ?, ?, ?);", (firstname, lastname, phone, email))
        cur.commit()

#Get user input
print ('Enter a new contact')
print ('')
firstname = input('Enter first name: ')
lastname = input('Enter last name: ')
phone = input('Enter phone number: ')
email = input('Enter Email address: ')

createnewdb = input('Enter 1 to create new db: ')
if createnewdb == 1:
    create_db()
else:
    sys.exit(0)
4

3 に答える 3

3

変数を挿入するためのこの例が非常に役立つことがわかりました。

c.execute("SELECT * FROM {tn} WHERE {idf}={my_id}".\
        format(tn=table_name, cn=column_2, idf=id_column, my_id=some_id))

ここにチュートリアルへのリンクがあります。 http://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html

于 2014-03-11T18:15:42.583 に答える
2

句が aと a を比較しているため、create_db()メソッドに到達していません。 文字列を返すので、実際には別の文字列と比較する必要があります..ifstringnumberinput()

以下を試してください:

if createnewdb == "1":
    create_db()
else:
    sys.exit(0)

次に、カーソルではなく接続オブジェクトを呼び出す必要がcommit()あります。そのため、ここでもメソッドを少し変更します。create_db()

def create_db():
    with con:
        cur = con.cursor()
        cur.execute("DROP TABLE IF EXISTS Contacts")
        cur.execute("CREATE TABLE Contacts (First Name TEXT, Last Name TEXT, Phone TEXT, Email TEXT);")
        cur.execute("INSERT INTO Contacts VALUES (?, ?, ?, ?);", (firstname, lastname, phone, email))

        ## call commit on the connection...
        con.commit()

それはあなたのために働くはずです!

于 2013-11-04T20:23:07.943 に答える