我正在使用kivy制作一个应用程序,无法找出为什么我创建的两个表无法连接起来。我希望UserDetails表中的UserDetailsID出现在我的用户表中。你知道吗
有人知道我做错了什么吗?代码运行良好,但没有达到我想要的效果。非常感谢您的帮助!你知道吗
数据库.py代码:
import sqlite3
def create_table(db_name,table_name,sql):
with sqlite3.connect(db_name) as db:
cursor = db.cursor()
cursor.execute("PRAGMA foreign_keys")
cursor.execute(sql)
db.commit()
def create_user_table():
sql = """create table User
(UserID integer,
username text,
password text,
UserDetailsID integer,
primary key(UserID),
foreign key(UserDetailsID) references
UserDetails(UserDetailsID))"""
create_table(db_name,"User",sql)
def create_user_details_table():
sql = """create table UserDetails
(UserDetailsID integer,
age text, gender text,
weight text, height text,
activity text, target text,
primary key(UserDetailsID))"""
create_table(db_name,"UserDetails",sql)
if __name__ == "__main__":
db_name = "app.db"
create_user_table()
create_user_details_table()
主.py代码:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.image import Image
from kivy.graphics import Rectangle, Color
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.core.text import Label
import sqlite3
Builder.load_file('LoginScreen.kv')
Builder.load_file('SignUpScreen.kv')
Builder.load_file('CalorieCalcScreen.kv')
Builder.load_file('HomeScreen.kv')
sm = ScreenManager()
class LoginScreen(Screen):
def returnback(self):
self.parent.current = 'calories'
pass
class SignUpScreen(Screen):
def CalorieCalcScreen(self,username,password):
validate = insert_User_data(self,username,password)
if validate == True:
sm.add_widget(CalorieCalcScreen(name='done'))
self.parent.current = 'done'
pass
class CalorieCalcScreen(Screen):
def LoginScreen(self,gender,age,weight,height,activity,target):
validated =
insert_UserDetails_data(self,age,gender,weight,height,activity,target)
if validated == True:
sm.add_widget(LoginScreen(name='finished'))
self.parent.current = 'finished'
def returnback(self):
self.parent.current = 'login'
pass
class HomeScreen(Screen):
pass
def insert_User_data(self,username,password):
with sqlite3.connect(db_name) as db:
cursor = db.cursor()
sql = "insert into User(username,password) values (?,?)"
values = (username,password)
cursor.execute(sql,values)
db.commit()
validate = True
return validate
def insert_UserDetails_data(self,age,gender,height,weight,activity,target):
with sqlite3.connect(db_name) as db:
cursor = db.cursor()
sql = "insert into UserDetails(age,gender,weight,height,activity,target) values (?,?,?,?,?,?)"
values = (age,gender,weight,height,activity,target)
cursor.execute(sql,values)
db.commit()
validated = True
return validated
sm.add_widget(LoginScreen(name='LoginScreen'))
sm.add_widget(SignUpScreen(name='SignUpScreen'))
sm.add_widget(CalorieCalcScreen(name='CalorieCalcScreen'))
sm.add_widget(HomeScreen(name='HomeScreen'))
class MainApp(App):
def build(self):
return sm
if __name__ == "__main__":
db_name = "app.db"
MainApp().run()
目前没有回答
相关问题 更多 >
编程相关推荐