用python为电报机器人创建良好的数据库
此函数允许我将变量存储在单个列中,如何将下一个变量存储在下一列中 代码注册用户,但不交叉检查(用户可以注册多次),我如何建立一个良好的数据库进行预约。我不知道从哪里开始,哪怕是很少的帮助也将不胜感激。一些观察结果 所以,您可以从用户处获得约会(一个接一个),并将它们存储到表行中 要在数据库中存储数据,请使用用python为电报机器人创建良好的数据库,python,python-3.x,telegram,telegram-bot,python-telegram-bot,Python,Python 3.x,Telegram,Telegram Bot,Python Telegram Bot,此函数允许我将变量存储在单个列中,如何将下一个变量存储在下一列中 代码注册用户,但不交叉检查(用户可以注册多次),我如何建立一个良好的数据库进行预约。我不知道从哪里开始,哪怕是很少的帮助也将不胜感激。一些观察结果 所以,您可以从用户处获得约会(一个接一个),并将它们存储到表行中 要在数据库中存储数据,请使用add\u item()方法: def添加项目(自身、项目文本、所有者): stmt=“插入项目(说明、所有者)值(?,)” args=(项目\文本,所有者) self.conn.execut
add\u item()
方法:
def添加项目(自身、项目文本、所有者):
stmt=“插入项目(说明、所有者)值(?,)”
args=(项目\文本,所有者)
self.conn.execute(stmt,args)
self.conn.commit()
表模式是
创建表(如果不存在项)(说明文本、所有者文本)
根据rowself.conn=sqlite3.connect(dbname)
,您正在使用SQLite数据库
问题
此函数允许我在单个列中存储变量,如何在下一列中存储下一个变量?…
我从用户那里得到的文本存储在一列中,下一个文本存储在它下面。但是我想像在php和sql中一样将文本存储在一行中
add\u item()
时都会创建新行的原因。这就是它的工作方式。因此,当您想要列出用户的所有约会时,您将收到一组行,而不是一行,其中N个约会存储在单独的列中李>
顺便问一下,我不明白你这是什么意思:
我想像在php和sql中一样,将文本存储在一行中
下一步怎么办
我认为您可以选择以下选项:
- 例如,切换到NoSQL数据库,如MongoDB或Redis。大多数NoSQL数据库没有模式,您可以在其中插入任意结构的数据,并且可以本地存储对象的列表。您可以在MongoDB中使用单个JSON文档,表示用户及其约会,或者在Redis中使用用户聊天id键的约会列表
- 如果希望继续使用关系数据库,可以切换到支持列类型为
的数据库。SQLite不支持此数据类型,但是。SQLite之所以没有此功能,是因为它被设计为简单和可移植的(一个数据库=一个文件,但也可以完全存储在RAM中)list
- 保持当前数据库和表模式不变,并将约会存储在行中,因为这对于这个简单的任务来说似乎没问题。如有必要,请根据此DB数据结构调整您的代码
如果您愿意,可以在评论部分询问更多问题。此功能允许我将变量存储在单列中。什么变量?什么专栏?下一个变量和下一列是什么?我从用户那里得到的文本存储在一列中,下一个文本存储在它下面。但是我想像php和sqlwhat do
db.get_items
和db.add_item
函数那样将文本存储在一行中。add_item()获取该项的文本并将其插入到我们的数据库表中。get_items()从元组格式的单个(第一个)列返回数据库中所有项目的列表。@IvanVinogradov我还用我现在尝试的代码更新了问题(现在制作),在等待您对此的答复时,我尝试并制作了一些令人满意的东西。我完全明白你的意思,我不知道如何使用其他数据库。如果您能提供帮助,这将对我非常有帮助,也很有价值。@Ivanvinogradovo为什么您不能将当前数据库与其架构一起使用?我在制作逻辑时遇到问题,请更详细地描述它。我想询问您想要什么服务,只需预约姓名,然后从自定义键盘询问dake,该键盘应检查小时已经是预定时间,请将这些详细信息保存在数据库中。你能在这方面指导我吗@IvanVinogradov