(Python SQLite)从1个特定列中选择数据以在变量中使用?

3htmauhk  于 2023-11-21  发布在  SQLite
关注(0)|答案(1)|浏览(125)

我将数据存储在数据库中,并希望从一列中检索数据,但我只从一个单元格中获取数据,但它使用.fetchone()吐出的数据显示为:(TheData,)。

  • 我使用的是aiosqlite,它是sqlite的aprc库。*
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| modchannel|
| --|--|
| 12345 |RandomData|
| 67890 |MoreData|
现在,这段代码工作了,它确实从我想要的行中选择了我想要的正确列,但是它抓取了数据(比如说从12345的行中),这将是在这个伪情况下:RandomData,但是当存储在变量中时,它显示为:('RandomData',)
目前,我只是在做以下事情来剥离数据周围的东西:

result = "".join(map(str, sresult))


然后设置一个新的变量“result”,数据看起来像:RandomData看起来是一个很好的解决方案,但我相信这不是选择单个单元格数据的正确方法,必须有一种方法来获得该数据,而不需要使用连接Map,因为其他数据库可能会在未来使用此方法时出错。
我想很快存储日期/时间数据,我担心连接Map可能会在从单元格中取出数据用于变量时破坏这些数据。
我对数据库很陌生,所以任何帮助都很感激,我希望我的例子能解释我的问题。哦,我看到资源说select是在一个元组中存储数据,所以我需要对值进行重新定义,等等,等等,但我使用的是DB 2C,不确定是否有一种方法可以在DB 2C中使用我正在使用的库来执行此操作,并希望有一种简单的方法可以查询DB以返回该库单元格的数据,因为这就是我所要求的,而不是一行数据或一列列。

juzqafwq

juzqafwq1#

更新好的,我想我可能已经解决了我自己的问题,但我欢迎其他人的任何反馈。

我现在所做的是分配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解决方案更好。

相关问题