我正在尝试使用我的 python 脚本(在本地运行)连接到 mysql 数据库(托管在媒体神庙上),但在运行时收到错误。
错误是:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py", line 179, in _open_connection
self._cmysql.connect(**cnx_kwargs)
_mysql_connector.MySQLInterfaceError: Bad handshake
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/Charlie/Documents/python/myscript/mysql_insert.py", line 8, in <module>
port="3306"
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/__init__.py", line 172, in connect
return CMySQLConnection(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py", line 78, in __init__
self.connect(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/abstracts.py", line 735, in connect
self._open_connection()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py", line 182, in _open_connection
sqlstate=exc.sqlstate)
mysql.connector.errors.OperationalError: 1043 (08S01): Bad handshake
Run Code Online (Sandbox Code Playgroud)
这是脚本中的代码
import mysql.connector …
Run Code Online (Sandbox Code Playgroud) 我有一个 python 脚本,它创建一些对象。我希望能够将这些对象保存到我的 postgres 数据库中以供以后使用。
我的想法是我可以腌制一个对象,然后将其存储在数据库的字段中。但我在如何存储、检索和使用数据方面绕来绕去。
我尝试将 pickle 二进制字符串存储为, text
但我无法弄清楚如何对其进行编码/转义。然后如何将字符串作为二进制字符串加载以进行 unpickle。
我尝试过将数据存储为bytea
有psycopg2.Binary(data)
和没有。然后读入缓冲区并进行编码,base64.b64encode(result)
但结果不一样并且无法取消。
有没有一种简单的方法可以在 SQL (postgres) 数据库中存储和检索 python 对象?
我有一个相当简单的 NLTK 和 sklearn 分类器(我对此完全是菜鸟)。
我做通常的进口
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn import metrics
from sklearn.feature_extraction.text import TfidfVectorizer
Run Code Online (Sandbox Code Playgroud)
我加载数据(我已经清理过它)。这是一个非常简单的数据框,有两列。第一个是包含清理后的'post_clean'
文本,第二个是'uk'
或者True
False
data = pd.read_pickle('us_uk_posts.pkl')
Run Code Online (Sandbox Code Playgroud)
然后我使用 tfidf 进行矢量化并分割数据集,然后创建模型
tf = TfidfVectorizer()
text_tf = tf.fit_transform(data['post_clean'])
X_train, X_test, y_train, y_test = train_test_split(text_tf, data['uk'], test_size=0.3, random_state=123)
clf = MultinomialNB().fit(X_train, y_train)
predicted = clf.predict(X_test)
print("MultinomialNB Accuracy:" , metrics.accuracy_score(y_test,predicted))
Run Code Online (Sandbox Code Playgroud)
显然,除非我完全遗漏了一些东西,否则我的准确度为 93%
我的两个问题是: …
我正在尝试使用云函数通过每天调用外部 API 一次来更新数据。
到目前为止我有:
云计划设置为调用功能 1
功能 1 - 循环项目并为每个项目创建一个任务
任务 - 使用函数 1 提供的数据调用函数 2
功能2 - 调用外部API来获取数据并更新我们的数据库
问题是每天有大约 2k 项需要更新,而云函数在执行此操作之前会超时,因此我将它们放入队列中。但即使将项目放入队列中,云功能也会花费太长时间,因此在添加所有项目之前就会超时。
有没有一种简单的方法可以一次将多个任务批量添加到队列中?
如果做不到这一点,有更好的解决方案吗?
全部用python编写
函数1的代码:
def refresh(request):
for i in items:
# Create a client.
client = tasks_v2.CloudTasksClient()
# TODO(developer): Uncomment these lines and replace with your values.
project = 'my-project'
queue = 'refresh-queue'
location = 'europe-west2'
name = i['name'].replace(' ','')
url = f"https://europe-west2-my-project.cloudfunctions.net/endpoint?name={name}"
# Construct the fully qualified queue name.
parent = client.queue_path(project, location, queue)
# Construct the …
Run Code Online (Sandbox Code Playgroud) python google-cloud-platform google-cloud-functions google-cloud-scheduler google-cloud-tasks
我正在尝试在 python 中动态创建一个文件,然后将其上传到谷歌云存储,但我无法从字符串或字节对象上传。
脚本的基本设置是
from google.cloud import storage
storage_client = storage.Client()
storage_client = storage.Client()
bucket = storage_client.bucket("bucket_name")
blob = bucket.blob("destination_blob_name")
Run Code Online (Sandbox Code Playgroud)
如果我然后获取一个文件并运行upload_from_filename
它上传就可以了
blob.upload_from_filename("source_file_name.pdf")
Run Code Online (Sandbox Code Playgroud)
如果我获取相同的文件但尝试使用上传upload_from_string
with open('source_file_name.pdf', 'rb') as f:
file_string = f.read()
blob.upload_from_string(file_string, content_type='application/pdf')
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: None could not be converted to bytes
Run Code Online (Sandbox Code Playgroud)
我已经检查过并且file_string
是一个有效的字节对象
同样,如果我尝试upload_from_file
with open('source_file_name.pdf', 'rb') as f:
file_string = f.read()
blob.upload_from_file(file_string, content_type='application/pdf')
Run Code Online (Sandbox Code Playgroud)
我收到错误:
AttributeError: 'bytes' object has no attribute 'tell'
Run Code Online (Sandbox Code Playgroud)
在我的实际用例中,我使用 BytesIO 创建一个字节对象,它看起来像
pdf = BytesIO()
pisa.CreatePDF(html, pdf)
resp = pdf.getvalue()
pdf.close() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 feedparserpython
从 sub_reddit 获取最新的帖子。
我有下面的代码,但当我运行它时它没有返回任何内容。
import feedparser
feed = feedparser.parse("http://www.reddit.com/r/funny/new/.rss")
#feed = feedparser.parse("http://feeds.bbci.co.uk/news/england/london/rss.xml")
feed_entries = feed.entries
for entry in feed.entries:
article_title = entry.title
article_link = entry.link
article_published_at = entry.published # Unicode string
article_published_at_parsed = entry.published_parsed # Time object
print (article_title)
Run Code Online (Sandbox Code Playgroud) python ×6
bytesio ×1
feedparser ×1
mysql ×1
nlp ×1
nltk ×1
pickle ×1
postgresql ×1
rss ×1
scikit-learn ×1