社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Aaron Bell  »  全部回复
回复总数  2

这是港口问题。

  • 转到quickstart.py文件的第34行(或者在其中显示creds= 运行本地服务器)。
  • 转到中的flow.py文件 带有此功能的google_auth_oauthlib包(在vs代码中,单击 运行本地服务器()并按F12或右键单击并选择“转到” 定义)。

你会看到第369行(在写这篇文章的时候)说 self, host='localhost', port=8080, .

当我查看netstat时,它实际上说这个端口正在使用,可能是在一个我从未关闭过的apache服务器上。

Netstat TCP Port 8080, LISTENING

  • 将google_auth_oauthlib包中flow.py文件中的值更改为8090,因此369看起来像 self, host='localhost', port=8090, .

我再次运行quickstart.py脚本,弹出了验证我的google帐户的窗口。

我选择了我的帐户,而且成功了。不要乱动管理的东西。

我很高兴我能找到这样的端口,因为我认为端口是以某种黑盒的方式选择的,就像它是从谷歌的服务器上决定的。

6 年前
回复了 Aaron Bell 创建的主题 » sqlite3-python调用变量的问题

新答案

以更直接地适应您的数据集。您需要一个字典列表,而不是一个列表字典,因为每个字典都将列名作为键,并有一个与该列(键)关联的值。

names = [{'name': "Freddy"}, {'name': "Joan"}]
results = c.executemany("INSERT INTO names ('name') VALUES (:name)", names)

剩下的sqlite3代码工作,输出:

Freddy
Joan

使用元组列表的选项

也可以使用元组列表。如果你不用字典,你需要 make sure each row is in tuple form . 你需要一个列表中的每个元组。在sql查询之后,需要在executemany函数中调用此列表。

基本代码:

names = [("Freddy",), ("Joan",)]
results = c.executemany("INSERT INTO names (name) VALUES (?)", names)

输出:

弗莱迪
琼

因此,确保每个条目都是元组或字典形式的。然后把这些元组或字典放入一个列表中。如果是字典形式,就不能使用“?”占位符。为每个占位符使用“:key_name”。(这里可能有不同的选择,但我还没有找到)。

原始回复

我怀疑executemany(…)应该是execute(…)。我已经有一段时间没有使用过sqlite3了,所以我现在将测试它以确定是否使用,然后再联系您。

更新1:

我记得“?”S“需要以元组形式发送。即。

cur.executemany("INSERT INTO Field (Field1) VALUES (?)", name)

至少需要

cur.executemany("INSERT INTO Field (Field1) VALUES (?)", (name, ...))

但我只得到了execute()(而不是executeMany())来处理这个问题,否则它又回到了同一个错误。这是我目前的工作准则:

cur.execute("INSERT INTO Field (Field1) VALUES (?)", (name,))

它给出了f,r,e,d,d,y,因为它把每个字母作为元组中的值来读取。如果它是元组形式,它会一次读到“freddy”。但我仍然对executeMany()有问题,我认为它的工作方式与我们认为的不同。

更新2:

这是我要做的。你需要 确保每一行都是元组形式 . 你需要一个列表中的每个元组。在sql查询之后,需要在executemany函数中调用此列表。

基本代码:

姓名=[(“Freddy”,),(“Joan”,)]
results=c.executemany(“插入名称(名称)值(?)”名称)

完整代码:

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()

# Create table
c.execute('''CREATE TABLE IF NOT EXISTS names
             (name text)''')

names = [("Freddy",), ("Joan",)]
results = c.executemany("INSERT INTO names (name) VALUES (?)", names)
conn.commit()

for row in c.execute('SELECT * FROM names'):
    print(row[0])

打印出来:

弗莱迪
琼

更新3:

我已经更新了它以更直接地适应您的数据集。您需要一个字典列表,而不是一个列表字典,因为每个字典都将列名作为键,并有一个与该列(键)关联的值。

这里还有一些代码,我已经开始工作了。

名字=[{name':“freddy”},{name':“joan”}]
results=c.executemany(“插入名称('name')值(:name)”,名称)

其余代码原样输出:

弗莱迪
琼

(灵感来自 this answer )