Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python为电报机器人创建良好的数据库_Python_Python 3.x_Telegram_Telegram Bot_Python Telegram Bot - Fatal编程技术网

用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()
表模式是

创建表(如果不存在项)(说明文本、所有者文本)
根据row
self.conn=sqlite3.connect(dbname)
,您正在使用SQLite数据库

问题 此函数允许我在单个列中存储变量,如何在下一列中存储下一个变量?


我从用户那里得到的文本存储在一列中,下一个文本存储在它下面。但是我想像在php和sql中一样将文本存储在一行中

  • 您不能在“下一列”中存储下一个约会,因为SQLite有一个模式,即每个表都有预定义的列数,有或没有类型和限制。因为约会数未定义,并且不能有列数未定义的表
  • 此外,关系数据库(SQLite、MySQL等)并不是为保存无模式数据而设计的(就像您的情况一样)
  • SQLite中的每一行都应该表示一条记录/一个类的实例/一个实体。这就是为什么每次调用
    add\u item()
    时都会创建新行的原因。这就是它的工作方式。因此,当您想要列出用户的所有约会时,您将收到一组行,而不是一行,其中N个约会存储在单独的列中 顺便问一下,我不明白你这是什么意思:

    我想像在php和sql中一样,将文本存储在一行中

    下一步怎么办 我认为您可以选择以下选项:

    • 例如,切换到NoSQL数据库,如MongoDB或Redis。大多数NoSQL数据库没有模式,您可以在其中插入任意结构的数据,并且可以本地存储对象的列表。您可以在MongoDB中使用单个JSON文档,表示用户及其约会,或者在Redis中使用用户聊天id键的约会列表
    • 如果希望继续使用关系数据库,可以切换到支持列类型为
      list
      的数据库。SQLite不支持此数据类型,但是。SQLite之所以没有此功能,是因为它被设计为简单和可移植的(一个数据库=一个文件,但也可以完全存储在RAM中)
    • 保持当前数据库和表模式不变,并将约会存储在行中,因为这对于这个简单的任务来说似乎没问题。如有必要,请根据此DB数据结构调整您的代码

    如果您愿意,可以在评论部分询问更多问题。

    此功能允许我将变量存储在单列中。什么变量?什么专栏?下一个变量和下一列是什么?我从用户那里得到的文本存储在一列中,下一个文本存储在它下面。但是我想像php和sqlwhat do
    db.get_items
    db.add_item
    函数那样将文本存储在一行中。add_item()获取该项的文本并将其插入到我们的数据库表中。get_items()从元组格式的单个(第一个)列返回数据库中所有项目的列表。@IvanVinogradov我还用我现在尝试的代码更新了问题(现在制作),在等待您对此的答复时,我尝试并制作了一些令人满意的东西。我完全明白你的意思,我不知道如何使用其他数据库。如果您能提供帮助,这将对我非常有帮助,也很有价值。@Ivanvinogradovo为什么您不能将当前数据库与其架构一起使用?我在制作逻辑时遇到问题,请更详细地描述它。我想询问您想要什么服务,只需预约姓名,然后从自定义键盘询问dake,该键盘应检查小时已经是预定时间,请将这些详细信息保存在数据库中。你能在这方面指导我吗@IvanVinogradov