我将数据存储在数据库中,并希望从一列中检索数据,但我只从一个单元格中获取数据,但它用 .fetchone() 吐出的数据如下:(TheData, )。
我使用的是aiosqlite,它是sqlite的异步库。
db = await aiosqlite.connect('main.sqlite')
c = await db.cursor()
await c.execute(f"SELECT modchannel FROM sconfig WHERE guild_id = {ctx.guild.id}")
sresult = await c.fetchone()
print(sresult)
这是加载我的主数据库,查看我所在的 sconfig 表,例如:
公会_id | 模组频道 |
---|---|
12345 | 随机数据 |
67890 | 更多数据 |
现在,这段代码可以工作,它确实从我想要的行中选择了我想要的正确列,但它获取了数据(比方说从 12345 的行),这将是在这种伪情况下:RandomData 但当存储在变量中时,它显示为: ('RandomData',)
目前我刚刚执行以下操作来剥离数据周围的内容:
result = "".join(map(str, sresult))
然后设置一个新变量“结果”,其数据如下所示:RandomData 看起来是一个很好的解决方案,但我确信这不是选择单个单元格数据的正确方法,必须有一种方法无需使用连接映射即可获取该数据,因为其他数据类型将来可能会变得混乱这个方法。
我想尽快存储日期/时间数据,我担心连接映射在从单元格中获取数据以在变量中使用时可能会破坏该数据。
我对数据库非常陌生,因此感谢任何帮助,我希望我的示例能够解释我的问题。 哦,我看到资源说选择将数据存储在元组中,所以我需要迭代值等,但我正在使用异步,不确定是否有办法与库异步执行此操作我正在使用并希望可能有一种简单的方法来查询数据库以仅返回一个数据单元格,因为这就是我所要求的,而不是一行数据或一列列。
更新 好吧,我想我可能实际上已经解决了我自己的问题,但我欢迎其他人提供任何其他反馈。
我现在所做的是分配 row_factory ,以便它索引(正确的术语?)所有结果(即使它在技术上是一个,但Python将每个输出视为一个元组)然后我可以从中分配一个变量。
像这样:
db = await aiosqlite.connect('main.sqlite')
db.row_factory = aiosqlite.Row
c = await db.cursor()
await c.execute(f"SELECT modchannel FROM sconfig WHERE guild_id = {ctx.guild.id}")
sresult = await c.fetchone()
print(sresult) #Still prints the tuple, so it shows: **('RandomData',)**
print(f"TEST: {sresult['modchannel']}") #Prints: RandomData
test = sresult['modchannel'] #Assigns RandomData as a string to test variable
print(f'TEST VARIABLE: {test}') #Test variable only contains the data: RandomData
所以这比我的 joinmap 解决方案效果更好。