Заслуженный участник |
 |
15/05/05 3445 USA
|
Последний раз редактировалось Yuri Gendelman 17.08.2020, 18:45, всего редактировалось 1 раз.
Сделал небольшой пример на Windows 10 (Python 3.8, SQLite3). >>> sqlite3.version '2.6.0' >>> sqlite3.sqlite_version '3.28.0' Ошибок не наблюдал. 1. Скрипт создает три таблицы (chat, players и chatnew) и заполняет первые две.
import sqlite3 as sl
con = sl.connect('kotenok-gav.db')
with con:
con.execute("""
CREATE TABLE CHAT (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
type TEXT,
authorid INTEGER,
message TEXT,
created TEXT
);
""")
con.execute("""
CREATE TABLE PLAYERS (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
accountid INTEGER
);
""")
con.execute("""
CREATE TABLE CHATNEW (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
type TEXT,
authorid INTEGER,
message TEXT,
created TEXT
);
""")
sql = 'INSERT INTO chat (id, type, authorid, message, created) values(?, ?, ?, ?, ?)'
data = [
(101, "typ1", 1, "msg1", "cre1"),
(102, "typ2", 2, "msg2", "cre2"),
(103, "typ3", 2, "msg3", "cre3"),
(104, "typ4", 3, "msg4", "cre4")
]
with con:
con.executemany(sql, data)
with con:
data = con.execute("SELECT * FROM chat")
for row in data:
print(row)
sql = 'INSERT INTO PLAYERS (id, accountid) values(?, ?)'
data = [
(1, 21),
(2, 22),
(3, 23)
]
with con:
con.executemany(sql, data)
with con:
data = con.execute("SELECT * FROM PLAYERS")
for row in data:
print(row)
2. Скрипт выполняет LEFT OUTER JOIN
import sqlite3 as sl
con = sl.connect('kotenok-gav.db')
sql = """INSERT INTO chatnew (id, TYPE, authorid, message, created)
SELECT m.id, m.TYPE, p.accountid, m.message, m.created FROM chat m
LEFT OUTER JOIN players p ON p.id = m.authorid"""
with con:
con.execute(sql)
with con:
data = con.execute("SELECT * FROM chatnew")
for row in data:
print(row)
|
|