我在Eclipse中从PyDev运行它...
import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='userid', passwd='password', db='fan')
cur = conn.cursor()
print "writing to db"
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')")
print "wrote to db"
Run Code Online (Sandbox Code Playgroud)
结果是,在控制台顶部显示C:... test.py,并在控制台中:
写入db写入db
所以它不会在执行命令之后终止.但是当我在MySQL中查看表时,它是空的.没有插入记录.
首先,为什么不写这个记录.其次,如何查看日志或错误以查看发生的情况.如果代码失败,通常会出现某种红色错误.
我刚刚使用PyMySQL而不是MySQLdb解决了我的Django 1.3应用程序中的一些问题.我按照本教程介绍了如何进行切换:http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html
现在我想知道PyMySQL究竟是什么以及它与MySQLdb的不同之处.
我在localhost上使用它,然后将其上传到某个主机.
是否可以在localhost上使用PyMySQL并托管它们提供的任何内容?由于我已将base.py和introspection.py中的"MySQLdb"更改为"PyMySQL",我是否需要在更改这些文件后将其上传到服务器?或者因为它是Django的文件,因为Django已经上传到那里,这不是很重要吗?
我正在尝试在Ubuntu上使用PyMySQL.
我已经安装了pymysql两个pip,pip3但每次使用import pymysql时都会返回ImportError: No module named 'pymysql'
我正在使用Ubuntu 15.10 64位和Python 3.5.
同样的.py可以在Windows上使用Python 3.5,但不适用于Ubuntu.
我有以下内容:
import MySQLdb as dbapi
import sys
import csv
dbServer='localhost'
dbPass='supersecretpassword'
dbSchema='dbTest'
dbUser='root'
dbQuery='SELECT * FROM pbTest.Orders;'
db=dbapi.connect(host=dbServer,user=dbUser,passwd=dbPass)
cur=db.cursor()
cur.execute(dbQuery)
result=cur.fetchall()
c = csv.writer(open("temp.csv","wb"))
c.writerow(result)
Run Code Online (Sandbox Code Playgroud)
这会产生乱码.我熟悉使用打印记录[0]等.不知道我应该如何设置格式.产生类似查询在控制台中的内容.我不能从mysql服务器做一个简单的INTO OUTFILE.
我正在使用Flask和MySQL开发一个相当简单的Web应用程序.
我正在努力与unicode.用户有时会粘贴他们从Word复制的东西,并且它会被旧的智能引号所覆盖u'\u201c'.
一点点的调查表明我与MySQL的连接正在使用Latin1charset(似乎是默认值).
如何指定使用unicode进行连接?
我正在使用pyMySQL,它声称是MySQLdb的替代品.MySQLdb定义了一个对象的set_character_set(self, charset)函数connection,但pyMySQL没有(如果我尝试,我会收到错误).
我还在学习python以及使用第三方模块的所有不同方法.我已经安装了https://pypi.python.org/pypi/mysqlclient,这里推荐Python 3和MySQL
我相信我正确安装了包
D:\install\python modules>python -m pip install mysqlclient-1.3.6-cp34-none-win_amd64.whl
Unpacking d:\install\python modules\mysqlclient-1.3.6-cp34-none-win_amd64.whl
Installing collected packages: mysqlclient
Successfully installed mysqlclient
Cleaning up...
Run Code Online (Sandbox Code Playgroud)
奇怪的是当我尝试导入模块mysqlclient时,我得到以下内容
D:\install\python modules>python
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:16:31) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysqlclient
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'mysqlclient'
Run Code Online (Sandbox Code Playgroud)
我检查了主页https://github.com/PyMySQL/mysqlclient-python,我找不到任何关于如何使用这个模块的例子.我很困惑,我刚刚错过了这里的船吗?
我是Django的新手.整个下午我都没有配置MySQL引擎.我对数据库引擎和数据库驱动程序非常困惑.是发动机也是司机?所有教程都说ENGINE应该是'django.db.backends.mysql',但是ENGINE如何决定使用哪个驱动程序连接MySQL?
每次它都说"django.db.backends.mysql",遗憾的是我无法安装MySQLDb和mysqlclient,但是已经安装了PyMysql和官方的mysql连接器2.1.3.我怎么能将驱动程序设置为PyMysql或mysql连接器?
非常感谢!
这个问题还没有解决:引擎也是驱动程序吗?
这是我建立数据库连接的 Python 代码。但我的代码中出现类型错误。有什么问题吗?
import pymysql
connnection = pymysql.connect("localhost", "root", "", "dbname")
Run Code Online (Sandbox Code Playgroud)
错误:
import pymysql
connnection = pymysql.connect("localhost", "root", "", "dbname")
Run Code Online (Sandbox Code Playgroud) 我发现(艰难的方式)MySQL的UTF8字符集只有3个字节.一些研究表明,我可以通过更改表来利用utf8mb4排序规则来解决这个问题,并获得UTF应该是完整的4个字节.
我已经这样做了.我的数据库,表格和列都已被ALTER编辑以利用此字符集.但是,如果我的数据的unicode代码点大于U + FFFF,我仍会收到此消息:
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"
Run Code Online (Sandbox Code Playgroud)
我发现我有以下设置:
> show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)
该collation_server是通过更改设置my.cnf.我的问题是,如何更改连接?我目前使用SQL Alchemy和pymysql连接到数据库,如下所示:
connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
engine = create_engine(connect_string, convert_unicode=True, echo=False)
session = sessionmaker()
session.configure(bind=engine)
Run Code Online (Sandbox Code Playgroud)
我能做些什么来改变从utf8_general_ci到utf8mb4_general_ci通过SQL炼金术连接时?
我正在尝试将mySQL查询结果存储在pandas DataFrame中,pymysql并且遇到构建数据帧的错误.在这里和这里找到了类似的问题,但看起来有pymysql抛出特定的错误:
import pandas as pd
import datetime
import pymysql
# dummy values
connection = pymysql.connect(user='username', password='password', databse='database_name', host='host')
start_date = datetime.datetime(2017,11,15)
end_date = datetime.datetime(2017,11,16)
try:
with connection.cursor() as cursor:
query = "SELECT * FROM orders WHERE date_time BETWEEN %s AND %s"
cursor.execute(query, (start_date, end_date))
df = pd.DataFrame(data=cursor.fetchall(), index = None, columns = cursor.keys())
finally:
connection.close()
Run Code Online (Sandbox Code Playgroud)
收益: AttributeError: 'Cursor' object has no attribute 'keys'
如果我删除index和columns参数:
try:
with connection.cursor() …Run Code Online (Sandbox Code Playgroud) pymysql ×10
python ×9
mysql ×8
django ×2
python-3.x ×2
csv ×1
eclipse ×1
mariadb ×1
mysql-python ×1
pandas ×1
python-2.7 ×1
sqlalchemy ×1
ubuntu ×1
unicode ×1
utf8mb4 ×1