sqlite - sqlite3.OperationalError:没有这样的表:page2
问题描述
我正在尝试将名为 page2 的表的内容写入另一个名为 page3 的表,但我不断收到 sqlite3.OperationalError: no such table: page2 尽管所有数据库和文件都在同一个目录中。我尝试了很多网上看到的东西。当我使用 sqlite 浏览器时,它会看到表格:page2。
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.button import Button
import sqlite3 as sql
# Paths
path = 'C:\\Users\\USA GADGETS\\PycharmProjects\\App\\first_page.db'
path1 = 'C:\\Users\\USA GADGETS\\PycharmProjects\\App\\second_page.db'
path2 = 'C:\\Users\\USA GADGETS\\PycharmProjects\\App\\third_page.db'
path3 = 'C:\\Users\\USA GADGETS\\PycharmProjects\\App\\fourth_page.db'
path4 = 'C:\\Users\\USA GADGETS\\PycharmProjects\\App\\fifth_page.db'
# connections
conn = sql.connect(path) # conect to first page database
conne = sql.connect(path1)# conect to second page database
connec=sql.connect(path2) # conect to third page database
fourth_page_connec = sql.connect(path3) # conect to fourth page database
fifth_page_connec = sql.connect(path4) # conect to fifth page database
# Cursor
cur = conn.cursor() # First page cursor
curs = conne.cursor() # Second page cursor
curso=connec.cursor() # Third page cursor
cursoo=fourth_page_connec.cursor() # Fourth page cursor
cursoor=fifth_page_connec.cursor() # Fifth page cursor
# pass a query
cur.execute(""" CREATE TABLE IF NOT EXISTS page1(Month)""") # First Page Query
conn.commit() # First Page commit
curs.execute("""CREATE TABLE IF NOT EXISTS page2(Items)""") # Second Page Query
conne.commit() # # Second Page commit
curso.execute("""CREATE TABLE IF NOT EXISTS page3(Description text,Amount REAL)""") # Third Page Query
connec.commit() # Third Page Commit
cursoo.execute(""" CREATE TABLE IF NOT EXISTS page4(Description text,Amount REAL)""")
fourth_page_connec.commit()
cursoor.execute(""" CREATE TABLE IF NOT EXISTS page5(Description text,Amount REAL)""")
fifth_page_connec.commit()
# Close connection
conn.close()
conne.close()
connec.close()
fourth_page_connec.close()
fifth_page_connec.close()
# declaration of properties to modify objects from my.kv
finances= ObjectProperty()
month=ObjectProperty()
jan_action=ObjectProperty()
feb_action=ObjectProperty
mar_action=ObjectProperty()
apr_action=ObjectProperty
may_action=ObjectProperty()
jun_action=ObjectProperty
jul_action=ObjectProperty()
aug_action=ObjectProperty
sep_action=ObjectProperty()
oct_action=ObjectProperty
nov_action=ObjectProperty()
dec_action=ObjectProperty
# declaration of properties of second page
income_action=ObjectProperty()
budget_action=ObjectProperty
event_action=ObjectProperty()
analysis_action=ObjectProperty
report=ObjectProperty()
class FirstScreen(Screen):
def call_back(self,instance):
conn = sql.connect("first_page.db")
# Cursor
cur = conn.cursor()
# pass a query
cur.execute("""INSERT INTO page1(
Month) VALUES (?)""",(instance.text,))
# commit
conn.commit()
# Close connection
conn.close()
class SecondScreen(Screen):
def call_back(self, instance):
conne = sql.connect("second_page.db")
# Cursor
curs = conne.cursor()
# pass a query
curs.execute("""INSERT INTO page2(
items) VALUES (?)""", (instance.text,))
conne.commit()
curs.fetchall()
# committ
conne.commit()
# Close connection
conne.close()
class ThirdScreen(Screen):
desc_action = ObjectProperty()
amount_action = ObjectProperty()
def getFromIncome(self):
connec = sql.connect("third_page.db")
# Cursor
curso = connec.cursor()
# pass a query
curso.execute("""INSERT INTO page3(
Description,Amount) VALUES (?,?)""", (self.desc_action.text,self.amount_action.text,))
connec.commit()
curso.execute(""" INSERT INTO page3 SELECT Items FROM page2""") # This is where error is comingfrom
# commit
connec.commit()
# Close connection
connec.close()
class FourthScreen(Screen):
budget_input_1 = ObjectProperty()
budget_input_2 = ObjectProperty()
def getFromBudget(self):
fourth_page_connec = sql.connect("fourth_page.db")
# Cursor
cursoo = fourth_page_connec.cursor()
# pass a query
# curso.execute("""ATTACH DATABASE third_page AS page3""")
cursoo.execute("""INSERT INTO page4(
Description,Amount) VALUES (?,?)""",
(self.budget_input_1.text, self.budget_input_2.text,))
#cursoo.execute(""" SELECT * FROM first_page.db CROSS JOIN third_page.db""")
# committ
fourth_page_connec.commit()
# Close connection
fourth_page_connec.close()
class FifthScreen(Screen):
event_input_1 = ObjectProperty()
event_input_2 = ObjectProperty()
def getFromEvent(self):
fifth_page_connec = sql.connect("fifth_page.db")
# Cursor
cursoor = fifth_page_connec.cursor()
# pass a query
cursoor.execute("""INSERT INTO page4(
Description,Amount) VALUES (?,?)""", (self.event_input_1.text, self.event_input_2_input_2.text,))
#cursoor.execute(""" SELECT * FROM first_page.db CROSS JOIN third_page.db""")
# committ
fifth_page_connec.commit()
# Close connection
fifth_page_connec.close()
class FinalScreen(Screen):
pass
class UserIncomePage(Screen):
pass
class WindowManager(ScreenManager):
pass
kv=Builder.load_file("my.kv")
class MyApp(App):
def build(self):
return kv
MyApp().run()
解决方案
在执行该INSERT
语句之前,您必须附加包含该表的数据库page2
:
curso.execute("ATTACH DATABASE 'databasename.db' AS db2")
替换'databasename.db'
为要附加的数据库的完整路径和数据库名称和扩展名。
如果此路径存储在变量中,path1
那么通过提供列 page3 的名称,Description of
项目where the value of the column
page2`of
将被存储:
curso.execute("ATTACH DATABASE '" + path1 + "' AS db2")
然后像这样执行INSERT
语句:
curso.execute("INSERT INTO page3 (Description) SELECT Items FROM db2.page2")
推荐阅读
- sqlite - SQLite Left Join 2 个表,其中有超过 1 个匹配的寄存器
- python - 如何在熊猫中创建新列时按两个条件进行过滤
- node.js - 用电子运行 escpos 模块
- image - 使用带有一些附加参数的 shell 脚本删除文件 ( windows )
- ios - 用于 nil:NilClass 的 fastlane 未定义方法“split”
- python - 构造一个共享前缀的 Python 正则表达式
- postgresql - postgresql 文本搜索中的部分匹配与完全匹配排名
- http-status-codes - 如何在降水雷达上获得正确的显示
- perl - 跳过文件的前 x 行和最后 y 行
- python - 为什么我的队列挂着异步事件循环