私はNokia N810上でtclSqliteを実行することができないので、私はPythonにtclスクリプトを移植しています。スクリプトは、入力を求めるプロンプトを表示し、Notes、Tags、およびNotesXTags多対多tblの3つのテーブルを持つsqlite DBに渡します。私は何度も何度もタグを保存しないようにするトリガがあります。ノブ/愛好家である私は、tclスクリプトを通してそれぞれをPythonの行に置き換えて一行ずつ行った。あまりPythonicではありませんが、私はこのスクリプトをN810で動作させた後に、その言語を使用するつもりのない愛好家です。私はすべてのQを見ました& S.O.私はこれを何時間も働いてきました。私は少なくとも3つのバグを知っている。 「pythonmakenote.py」と呼ばれるモジュール内のスクリプトのチャンク:tty Python Sqliteアプリケーション:Noob NameError、予期しないEOF、sqliteエラー
クランチ・バン...といくつかのコメント....だから、私は「輸入pythonmakenote
import sys, tty
import sqlite3
def mn():
conn = sqlite3.connect('/home/j...notes.sqlite')
db = conn.cursor()
tagsofar =db.execute('select tag_text from tag')
print tagsofar
print "Enter note text, remember to let console wrap long lines"
notetxt = input("note: ")
print "Enter 1 or more tags separated by spaces"
taglist = input("tags: ")
taglist = taglist.split(" ")
db.execute('INSERT INTO note (note_txt) VALUES (?)', notetxt)
db.commit
fknote = db.execute('select last_insert_rowid()')
#records new tags since db trigger stops dups, updates many-many tbl
for tagtxt in taglist:
db.execute('INSERT INTO tag VALUES (?)',tagtxt)
db.commit
fktag = db.execute('select rowid from tag where tag_text = (?)',tagtxt)
db.execute('INSERT INTO fkeys VALUES (?,?)',fknote,fktag)
db.commit
'ここまでは順調ですね。私は「MN」を入力し、エラーが表示されます。
>>> mn
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'mn' is not defined
は、その後、私はこれを試してみてください。
>>> from pythonmakenote import mn
>>> mn
<function mn at 0xb76b2a74>
しかし、「MN」はまだ動作しません。だから私は...作品ソートの世界でS.O.ある
>>> import mn
<sqlite3.Cursor object at 0xb75fb740>
Enter note text, remember to let console wrap long lines
note: 'this is a note'<--------------------------Quotes are a MUST (but not in tcl version)
Enter 1 or more tags separated by spaces
tags: 'dev'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mn.py", line 19, in <module>
db.execute('INSERT INTO note (note_txt) VALUES (?)', notetxt)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 14 supplied.<-----------------------------Huh?
を完全にデフを削除し、ファイルをコピーして、「mn.py」という名前を付け、それコードブロックタグや他のマークダウンに関する指示?
なぜモジュールでmnを定義して使用できないのですか? Python: NameError: global name 'foobar' is not definedは関係していますか?
タグでメモを取ったり、タグリストを取得したりするためにいくつかのデフがありました。私はそれらがすべて1つのモジュールに入ると思っていました。
私の入力(メモまたはスペースで区切られたタグリスト)の周りに引用符を入れたくありません。それは実践ですか?私はそこにインポートttyものがありますが、私はそれを使用していません(どのようにはわかりませんが、私は学ばなければならないと思っています)
私は3つのタグを入力すると、 、私は '予期しないEOF'エラーが発生します。どうして?
文字列が不変なので、リスト/ splitを以前に文字列だったvarに割り当てるのは問題がありますか?
sqliteはどこで '14'バインディングを取得しますか?私はスペースの文字を分割していますが、無視されています(私は間違っているので)。
私の小さなプロジェクトをBashで行うのは簡単でしょうか?
これまでに時間を費やす人に感謝します。私は、S.U.のトピックではない分野で助けが必要な習慣がありません。ここではnoob-RTFMもあります。私はtclバージョンで少し苦労しましたが、今はチャンピオンのように機能します。私はPythonがやや簡単だと思っていました。それはまだかもしれないと思う。
編集:WOW。たくさんの改行が取り除かれました。申し訳ありませんが修正する方法がわかりません。私は "raw_input"がうまく動作するかどうか確認しません。
Thanks Markは、モジュール/名前の全体の事を間違いなく解決します。私は毎回それを入力しなければならないので、私はモジュール名を短縮するでしょう! raw_input、quoted、さらには三重引用符でさえ、sqliteはnotetxtのすべての文字を束縛として数えています。変数の受け渡しには別の表記法があると思います。それを見つけるためにオフ。再度、感謝します。 - ジェイ – klausnrooster
私の最後の編集を見ましたか? 'notetxt'の代わりに' [notetxt] 'または'(notetxt、) 'を渡してください。 –
マークは、私はあなたに気づくには余りにも眠くなっている必要がありますが完全にあらゆる面でITを解決しよう!ありがとうございます - ジェイ – klausnrooster