在Python中创建SQLite3表
我提前为问这样一个基础问题而道歉,但我对SQLite3还很陌生,刚开始有点困难。我想建立一个只有一张表的数据库。我用下面的代码来创建这张表。
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute('''CREATE TABLE mytable
(start, end, score)''')
但是每次我尝试更新或访问这张表时,似乎都显示它不存在,或者可能它在另一个数据库里。我还尝试创建一个叫example.mytable的表,但出现了这个错误: sqlite3.OperationalError: unknown database example
我到底漏掉了什么呢?谢谢!
2 个回答
3
import sqlite3;
import pandas as pd;
con=None
def getConnection():
databaseFile="./test.db"
global con
if con == None:
con=sqlite3.connect(databaseFile)
return con
def createTable(con):
try:
c = con.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS Movie
(start, end, score)""")
except Exception as e:
pass
def insert(con):
c = con.cursor()
c.execute("""INSERT INTO Movie (start, end, score)
values(1, 99, 123)""")
def queryExec():
con=getConnection()
createTable(con)
insert(con)
# r = con.execute("""SELECT * FROM Movie""")
result=pd.read_sql_query("select * from Movie;",con)
return result
r = queryExec()
print(r)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
8
我觉得在插入数据后需要进行一次提交(像新建表这样的结构变化应该自动提交)。我建议你在代码中添加数据库的完整路径,这样下次访问时可以确保你是在同一个地方。
这是对你代码的一个扩展:
import sqlite3
def create():
try:
c.execute("""CREATE TABLE mytable
(start, end, score)""")
except:
pass
def insert():
c.execute("""INSERT INTO mytable (start, end, score)
values(1, 99, 123)""")
def select(verbose=True):
sql = "SELECT * FROM mytable"
recs = c.execute(sql)
if verbose:
for row in recs:
print row
db_path = r'C:\Users\Prosserc\Documents\Geocoding\test.db'
conn = sqlite3.connect(db_path)
c = conn.cursor()
create()
insert()
conn.commit() #commit needed
select()
c.close()
输出结果:
(1, 99, 123)
在关闭程序后,如果我登录到SQLite数据库,数据仍然会在那里。