0

2 つの SQLite データベースがあります。

[sava@localhost python]$ sqlite3 herostat.db 
SQLite version 3.6.20                        
Enter ".help" for instructions               
Enter SQL statements terminated with a ";"   
sqlite> .tables                              
archer_stat   warrior_stat  wizard_stat      
sqlite> select * from warrior_stat;
3000|300|9|9|5|1500|1700|700|200|120
sqlite> .schema
CREATE TABLE archer_stat 
  (con int, str int, wit int, _int int, dex int, mp int, pdef int, mdef int, patack int, matack int);
CREATE TABLE warrior_stat
  (con int, str int, wit int, _int int, dex int, mp int, pdef int, mdef int, patack int, matack int);
CREATE TABLE wizard_stat
  (con int, str int, wit int, _int int, dex int, mp int, pdef int, mdef int, patack int, matack int);
sqlite> .exit
[sava@localhost python]$ sqlite3 players.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE users
  (login text, password text, _class text, con int, str int, wit int, _int int, dex int, mp int, pdef int, mdef int, patack int, matack int);
sqlite> .exit

私のPython 2.6コード:

conn = db.connect('herostat.db')
c = conn.cursor()
c.execute("SELECT * FROM warrior_stat")
cur_war = c.fetchone()[:]

conn2 = db.connect('players.db')
c2 = conn2.cursor()
c2.execute("INSERT INTO users(_class) VALUES ('warrior')")
c2.executemany('''INSERT INTO users(con, str, wit, _int, dex, mp, pdef, mdef, patack, matack) 
  VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (cur_war, ))
conn2.commit()
c2.close()

私が期待するもの:

player|password|warrior|3000|300|9|9|5|1500|1700|700|200|120

私が得るもの:

player|password|||||||||||
||warrior||||||||||
|||3000|300|9|9|5|1500|1700|700|200|120

私は何を間違っています=

プロセス登録の初期段階で PS プレーヤーとパスワードを書き込みます。

4

1 に答える 1

0

INSERTステートメントは、新しいレコードをテーブルに追加します。すでに 1 つのレコードがあり、2 つの INSERT を実行すると、その後 3 つのレコードが作成されます。

既存のレコードの値を変更するには、UPDATEステートメントを使用します。

于 2013-10-24T13:20:05.517 に答える